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: boolSent to this node’s own unicast address.
broadcast: boolSent 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
impl Addressed
Sourcepub fn classify(
destination: Ipv4Addr,
os_group: Option<bool>,
local: &LocalAddresses<'_>,
) -> Self
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.