aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
blob: 28f8823ecd2bd5ce81ec8d6786505e65f2449175 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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,
        }
    }
}