chiark / gitweb /
config: Substitutions prefer %{...} to %(...)s, document, etc.
[hippotat.git] / src / config.rs
index 174b568460c10c16559cdc7e0f5472d3b0eb7be1..4b94b3ed73357db4659e2c3fde777e4e67b13e66 100644 (file)
@@ -54,11 +54,11 @@ max_batch_up = 4000
 http_retry = 5
 port = 80
 vroutes = ''
-ifname_client = hippo%%d
-ifname_server = shippo%%d
+ifname_client = hippo%d
+ifname_server = shippo%d
 max_clock_skew = 300
 
-ipif = userv root ipif %(local)s,%(peer)s,%(mtu)s,slip,%(ifname)s '%(rnets)s'
+ipif = userv root ipif %{local},%{peer},%{mtu},slip,%{ifname} '%{rnets}'
 
 mtu = 1500
 
@@ -694,11 +694,11 @@ impl InstanceConfig {
         .collect::<HashMap<String, String>>();
       let bad = parking_lot::Mutex::new(vec![]);
       *var = regex_replace_all!(
-        r#"%(?:%|\((\w+)\)s|.)"#,
+        r#"%(?:%|\((\w+)\)s|\{(\w+)\}|.)"#,
         &var,
-        |whole, k| (|| Ok::<_,String>({
+        |whole, k1, k2| (|| Ok::<_,String>({
           if whole == "%%" { "%" }
-          else if k != "" {
+          else if let Some(&k) = [k1,k2].iter().find(|&&s| s != "") {
             substs.get(k).ok_or_else(
               || format!("unknown key %({})s", k)
             )?
@@ -713,14 +713,6 @@ impl InstanceConfig {
       }
     }
 
-    let ifname = match match end {
-      LinkEnd::Client => (&mut self.ifname_client, "ifname_client"),
-      LinkEnd::Server => (&mut self.ifname_server, "ifname_server"),
-    } { (var,name) => {
-      subst(var, &mut iter::empty()).context(name).context("interface name")?;
-      var
-    } };
-
     {
       use LinkEnd::*;
       type DD<'d> = &'d dyn Display;