abol_codegen/
rfc6911.rs

1use abol_core::packet::Packet;
2use std::net::Ipv6Addr;
3pub const FRAMED_IPV6_ADDRESS_TYPE: u8 = 168u8;
4pub const DNS_SERVER_IPV6_ADDRESS_TYPE: u8 = 169u8;
5pub const ROUTE_IPV6_INFORMATION_TYPE: u8 = 170u8;
6pub const DELEGATED_IPV6_PREFIX_POOL_TYPE: u8 = 171u8;
7pub const STATEFUL_IPV6_ADDRESS_POOL_TYPE: u8 = 172u8;
8pub trait Rfc6911Ext {
9    fn get_framed_ipv6_address(&self) -> Option<Ipv6Addr>;
10    fn set_framed_ipv6_address(&mut self, value: Ipv6Addr);
11    fn get_dns_server_ipv6_address(&self) -> Option<Ipv6Addr>;
12    fn set_dns_server_ipv6_address(&mut self, value: Ipv6Addr);
13    fn get_route_ipv6_information(&self) -> Option<Vec<u8>>;
14    fn set_route_ipv6_information(&mut self, value: Vec<u8>);
15    fn get_delegated_ipv6_prefix_pool(&self) -> Option<String>;
16    fn set_delegated_ipv6_prefix_pool(&mut self, value: impl Into<String>);
17    fn get_stateful_ipv6_address_pool(&self) -> Option<String>;
18    fn set_stateful_ipv6_address_pool(&mut self, value: impl Into<String>);
19}
20impl Rfc6911Ext for Packet {
21    fn get_framed_ipv6_address(&self) -> Option<Ipv6Addr> {
22        self.get_attribute_as::<Ipv6Addr>(FRAMED_IPV6_ADDRESS_TYPE)
23    }
24    fn set_framed_ipv6_address(&mut self, value: Ipv6Addr) {
25        let wire_val = value;
26        self.set_attribute_as::<Ipv6Addr>(FRAMED_IPV6_ADDRESS_TYPE, wire_val);
27    }
28    fn get_dns_server_ipv6_address(&self) -> Option<Ipv6Addr> {
29        self.get_attribute_as::<Ipv6Addr>(DNS_SERVER_IPV6_ADDRESS_TYPE)
30    }
31    fn set_dns_server_ipv6_address(&mut self, value: Ipv6Addr) {
32        let wire_val = value;
33        self.set_attribute_as::<Ipv6Addr>(DNS_SERVER_IPV6_ADDRESS_TYPE, wire_val);
34    }
35    fn get_route_ipv6_information(&self) -> Option<Vec<u8>> {
36        self.get_attribute_as::<Vec<u8>>(ROUTE_IPV6_INFORMATION_TYPE)
37    }
38    fn set_route_ipv6_information(&mut self, value: Vec<u8>) {
39        let wire_val = value;
40        self.set_attribute_as::<Vec<u8>>(ROUTE_IPV6_INFORMATION_TYPE, wire_val);
41    }
42    fn get_delegated_ipv6_prefix_pool(&self) -> Option<String> {
43        self.get_attribute_as::<String>(DELEGATED_IPV6_PREFIX_POOL_TYPE)
44    }
45    fn set_delegated_ipv6_prefix_pool(&mut self, value: impl Into<String>) {
46        let wire_val: String = value.into();
47        self.set_attribute_as::<String>(DELEGATED_IPV6_PREFIX_POOL_TYPE, wire_val);
48    }
49    fn get_stateful_ipv6_address_pool(&self) -> Option<String> {
50        self.get_attribute_as::<String>(STATEFUL_IPV6_ADDRESS_POOL_TYPE)
51    }
52    fn set_stateful_ipv6_address_pool(&mut self, value: impl Into<String>) {
53        let wire_val: String = value.into();
54        self.set_attribute_as::<String>(STATEFUL_IPV6_ADDRESS_POOL_TYPE, wire_val);
55    }
56}