pub struct ConsommeParams {
pub net_mask: Ipv4Address,
pub gateway_ip: Ipv4Address,
pub gateway_mac: EthernetAddress,
pub client_ip: Ipv4Address,
pub client_mac: EthernetAddress,
pub nameservers: Vec<IpAddress>,
pub prefix_len_ipv6: u8,
pub gateway_mac_ipv6: EthernetAddress,
pub gateway_link_local_ipv6: Ipv6Address,
pub client_ip_ipv6: Option<Ipv6Address>,
pub udp_timeout: Duration,
pub skip_ipv6_checks: bool,
}Expand description
Dynamic networking properties of a consomme endpoint.
Fields§
§net_mask: Ipv4AddressCurrent IPv4 network mask.
gateway_ip: Ipv4AddressCurrent Ipv4 gateway address.
gateway_mac: EthernetAddressCurrent Ipv4 gateway MAC address.
client_ip: Ipv4AddressCurrent Ipv4 address assigned to endpoint.
client_mac: EthernetAddressCurrent client MAC address.
nameservers: Vec<IpAddress>Current list of DNS resolvers.
prefix_len_ipv6: u8Current IPv6 network mask (if any).
gateway_mac_ipv6: EthernetAddressCurrent IPv6 gateway MAC address (if any).
gateway_link_local_ipv6: Ipv6AddressGateway’s link-local IPv6 address (derived from gateway_mac_ipv6).
This is the address used as the source for NDP Router Advertisements and as the target for Neighbor Solicitations.
client_ip_ipv6: Option<Ipv6Address>Current IPv6 address learned from guest via SLAAC (if any).
With SLAAC (Stateless Address Autoconfiguration), the guest generates its own IPv6 address using the advertised prefix and its interface identifier. This field is learned from incoming IPv6 traffic from the guest.
udp_timeout: DurationIdle timeout for UDP connections.
skip_ipv6_checks: boolIf true, skip checks for host IPv6 support and assume the host has a routable IPv6 address.
Implementations§
Source§impl ConsommeParams
impl ConsommeParams
Sourcepub fn new() -> Result<Self, Error>
pub fn new() -> Result<Self, Error>
Create default dynamic network state. The default state is IP address: 10.0.0.2 / 24 gateway: 10.0.0.1 with MAC address 52-55-10-0-0-1 IPv6 address: is not assigned by us, we expect the guest to assign it via SLAAC gateway IPv6 link-local address: fe80::5055:aff:fe00:102 (EUI-64 derived from gateway MAC address 52-55-0A-00-01-02)
Sourcepub fn set_cidr(&mut self, cidr: &str) -> Result<(), InvalidCidr>
pub fn set_cidr(&mut self, cidr: &str) -> Result<(), InvalidCidr>
Sets the cidr for the network.
Setting, for example, 192.168.0.0/24 will set the gateway to 192.168.0.1 and the client IP to 192.168.0.2.
Sourcepub fn compute_link_local_address(mac: EthernetAddress) -> Ipv6Address
pub fn compute_link_local_address(mac: EthernetAddress) -> Ipv6Address
Compute a link-local IPv6 address from a MAC address using EUI-64 format.
RFC 4291 Section 2.5.6: Link-local addresses are formed by combining the link-local prefix (fe80::/64) with an interface identifier derived from the MAC address using the EUI-64 format.
EUI-64 format (RFC 2464 Section 4):
- Insert 0xFFFE in the middle of the 48-bit MAC address
- Invert the universal/local bit (bit 6 of the first byte)
Sourcepub fn filtered_ipv6_nameservers(&self) -> Vec<Ipv6Address>
pub fn filtered_ipv6_nameservers(&self) -> Vec<Ipv6Address>
Returns the list of IPv6 nameservers suitable for advertisement to guests via NDP RDNSS or DHCPv6.
Filters out addresses that are not useful as DNS servers in a guest-facing context: unspecified, loopback, multicast, unique-local (fc00::/7), and deprecated site-local (fec0::/10) addresses.
Trait Implementations§
Source§impl Clone for ConsommeParams
impl Clone for ConsommeParams
Source§fn clone(&self) -> ConsommeParams
fn clone(&self) -> ConsommeParams
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more