From: Ian Jackson Date: Sat, 24 Jul 2021 12:39:23 +0000 (+0100) Subject: config, wip parsing X-Git-Tag: hippotat/1.0.0~485 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=6c72d353382a47ea542b18a0ce84b34afc9cf541;p=hippotat.git config, wip parsing Signed-off-by: Ian Jackson --- diff --git a/Cargo.lock b/Cargo.lock index 247b02f..f3d40af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -202,6 +202,7 @@ dependencies = [ "fehler", "hippotat-macros", "hyper", + "ipnet", "itertools", "lazy-regex", "log", @@ -292,6 +293,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "ipnet" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" + [[package]] name = "itertools" version = "0.10.1" diff --git a/Cargo.toml b/Cargo.toml index 9396f91..d2f3b30 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,7 @@ env_logger = "0.9" extend = "1" fehler = "1" hyper = "0.14" +ipnet = "2" itertools = "0.10" lazy-regex = "2" regex = "1.5" diff --git a/src/config.rs b/src/config.rs index 9b0f184..ed4023e 100644 --- a/src/config.rs +++ b/src/config.rs @@ -38,7 +38,7 @@ pub struct InstanceConfig { // Ordinary settings: pub addrs: Vec, -//xxx pub vnetwork: Vec, + pub vnetwork: Vec, pub vaddr: Vec, pub vrelay: IpAddr, pub port: u16, @@ -55,7 +55,7 @@ pub struct InstanceConfig { #[client] pub max_batch_up: u32, #[client] pub http_retry: Duration, #[client] pub url: Uri, -//xxx #[client] pub vroutes: Vec, + #[client] pub vroutes: Vec, } #[derive(Debug,Clone,Hash,Eq,PartialEq)] @@ -300,6 +300,7 @@ macro_rules! parseable_from_str { ($t:ty $(, $def:expr)? ) => { parseable_from_str!{u16, default() } parseable_from_str!{u32, default() } parseable_from_str!{String, default() } +parseable_from_str!{IpNet, default() } parseable_from_str!{IpAddr, Ipv4Addr::UNSPECIFIED.into() } parseable_from_str!{Uri, default() } diff --git a/src/prelude.rs b/src/prelude.rs index 29336ff..bcb3416 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -17,6 +17,7 @@ pub use anyhow::{anyhow, Context}; pub use extend::ext; pub use fehler::{throw, throws}; pub use hyper::Uri; +pub use ipnet::IpNet; pub use itertools::Itertools; pub use lazy_regex::regex_is_match; pub use structopt::StructOpt;