Co-authored-by: xiuting.xu <xiutingxt.xu@gmail.com> Reviewed-on: #2 Reviewed-by: yuyr <yuyr@zgclab.edu.cn> Co-authored-by: xuxt <xuxt@zgclab.edu.cn> Co-committed-by: xuxt <xuxt@zgclab.edu.cn>
48 lines
952 B
Rust
48 lines
952 B
Rust
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct IPAddrBlocks {
|
|
pub ips: Vec<IPAddressFamily>
|
|
}
|
|
|
|
|
|
// IP Address Family
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct IPAddressFamily {
|
|
pub address_family: Afi,
|
|
pub ip_address_choice: IPAddressChoice,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub enum Afi {
|
|
Ipv4,
|
|
Ipv6,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub enum IPAddressChoice {
|
|
Inherit,
|
|
AddressOrRange(Vec<IPAddressOrRange>),
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub enum IPAddressOrRange {
|
|
AddressPrefix(IPAddressPrefix),
|
|
AddressRange(IPAddressRange),
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub struct IPAddressPrefix {
|
|
pub address: IPAddress,
|
|
pub prefix_length: u8,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
|
pub struct IPAddressRange {
|
|
pub min: IPAddress,
|
|
pub max: IPAddress,
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
|
|
pub struct IPAddress(u128);
|
|
|