Skip to main content

Addressed

Struct Addressed 

Source
pub struct Addressed {
    pub node: bool,
    pub broadcast: bool,
}
Expand description

What a datagram’s destination address was, for this node. A host builds it with Addressed::classify. Both can hold at once, as where a loopback test’s broadcast address is its own; neither, for a destination that is neither (another host’s unicast, a multicast group).

It is a plain record, and closed on purpose: the receive rules ask a destination two questions, whether it was this node alone and whether it reached every node on the subnet (Annex J.2.11, J.2.12, J.4.1). Any other kind of destination answers the same two: for a B/IP-M node (Annex J.8, #941) the group address stands in for the broadcast one.

Fields§

§node: bool

Sent to this node’s own unicast address.

§broadcast: bool

Sent to the subnet’s broadcast address or 255.255.255.255, or for a B/IP-M node to its multicast group.

Implementations§

Source§

impl Addressed

Source

pub fn classify( destination: Ipv4Addr, os_group: Option<bool>, local: &LocalAddresses<'_>, ) -> Self

Classify a datagram by its destination IP address and, when the host reports it, whether the OS delivered it to a group (os_group). The OS’s word overrides the address: a group delivery is never unicast to the node, and a reported unicast never a broadcast.

When the broadcast address is a multicast group, the node is a B/IP-M member (Annex J.8): the group is its only broadcast destination, and 255.255.255.255 or a subnet’s directed broadcast is neither broadcast nor unicast to it. Members and plain B/IP devices don’t share a subnet (Annex J.8.1), so a subnet broadcast isn’t this network’s, and taking it as well could deliver one broadcast twice.

Trait Implementations§

Source§

impl Clone for Addressed

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Addressed

Source§

impl Debug for Addressed

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Addressed

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for Addressed

Source§

impl PartialEq for Addressed

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Addressed

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.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.