diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..28f8823 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,34 @@ +use std::net::{Ipv4Addr, Ipv6Addr}; + +use ipnet::Ipv6Net; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct Config { + pub serv: Ipv4Addr, + pub tn64: Ipv6Addr, + pub rt64: Ipv6Addr, + pub rt48: Ipv6Addr, + pub updt: String, +} + +#[derive(Clone, Debug)] +pub struct UsableConfig { + pub serv: Ipv4Addr, + pub tn64: Ipv6Net, + pub rt64: Ipv6Net, + pub rt48: Ipv6Net, + pub updt: String, +} + +impl From<Config> for UsableConfig { + fn from(config: Config) -> Self { + Self { + serv: config.serv, + tn64: Ipv6Net::new(config.tn64, 64).unwrap(), + rt64: Ipv6Net::new(config.rt64, 64).unwrap(), + rt48: Ipv6Net::new(config.rt48, 48).unwrap(), + updt: config.updt, + } + } +} |