ConsommeParams

Struct ConsommeParams 

Source
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: Ipv4Address

Current IPv4 network mask.

§gateway_ip: Ipv4Address

Current Ipv4 gateway address.

§gateway_mac: EthernetAddress

Current Ipv4 gateway MAC address.

§client_ip: Ipv4Address

Current Ipv4 address assigned to endpoint.

§client_mac: EthernetAddress

Current client MAC address.

§nameservers: Vec<IpAddress>

Current list of DNS resolvers.

§prefix_len_ipv6: u8

Current IPv6 network mask (if any).

§gateway_mac_ipv6: EthernetAddress

Current IPv6 gateway MAC address (if any).

§gateway_link_local_ipv6: Ipv6Address

Gateway’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: Duration

Idle timeout for UDP connections.

§skip_ipv6_checks: bool

If true, skip checks for host IPv6 support and assume the host has a routable IPv6 address.

Implementations§

Source§

impl ConsommeParams

Source

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)

Source

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.

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)
Source

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

Source§

fn clone(&self) -> ConsommeParams

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Inspect for ConsommeParams

Source§

fn inspect(&self, req: Request<'_>)

Inspects the object.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more