From 58928af7923b0e92f733cf91d304d3f4aef43184 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 25 Jul 2021 19:26:56 +0100 Subject: [PATCH] config: Refactor substutiton Signed-off-by: Ian Jackson --- src/config.rs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/config.rs b/src/config.rs index e6d7e59..174b568 100644 --- a/src/config.rs +++ b/src/config.rs @@ -727,20 +727,27 @@ impl InstanceConfig { fn dv(v: &[T]) -> String { format!("{}", v.iter().format(" ")) } - let vnetwork = dv(&self.vnetwork); - let vroutes = dv(&self.vroutes); - - let keys = &["local", "peer", "rnets", "ifname"]; + let mut ipif = mem::take(&mut self.ipif); // lets us borrow all of self + let s = &self; // just for abbreviation, below + let vnetwork = dv(&s.vnetwork); + let vroutes = dv(&s.vroutes); + + let keys = &["local", "peer", "rnets", "ifname"]; let values = match end { - Server => [&self.vaddr as DD , &self.vrelay, &vnetwork, ifname], - Client => [&self.link.client as DD, &self.vaddr, &vroutes, ifname], + Server => [&s.vaddr as DD , &s.vrelay, &vnetwork, &s.ifname_server], + Client => [&s.link.client as DD, &s.vaddr, &vroutes, &s.ifname_client], }; + let always = [ + ( "mtu", &s.mtu as DD ), + ]; + subst( - &mut self.ipif, + &mut ipif, &mut keys.iter().cloned() .zip_eq(values) - .chain([( "mtu", &self.mtu as DD )].iter().cloned()), + .chain(always.iter().cloned()), ).context("ipif")?; + self.ipif = ipif; } } } -- 2.30.2