MulticastUdpFace

Struct MulticastUdpFace 

Source
pub struct MulticastUdpFace { /* private fields */ }
Expand description

NDN face over IPv4 link-local multicast.

Interests sent on this face reach all NDN-capable nodes on the local link without requiring prior knowledge of their addresses. Data is returned via unicast UdpFace to the specific responder.

§Typical usage

  1. Start MulticastUdpFace at boot for neighbor discovery and prefix announcements.
  2. On receiving a multicast Interest, create a unicast UdpFace back to the responder’s source address and register it in the FIB.
  3. Subsequent traffic uses the unicast face; the multicast face handles only discovery and control traffic.

Implementations§

Source§

impl MulticastUdpFace

Source

pub async fn new( iface: Ipv4Addr, port: u16, group: Ipv4Addr, id: FaceId, ) -> Result<Self>

Bind to port, join group on interface iface. Use NDN_MULTICAST_V4 and NDN_PORT for standard NDN.

Source

pub async fn ndn_default(iface: Ipv4Addr, id: FaceId) -> Result<Self>

Standard NDN multicast (224.0.23.170:6363) on iface.

Source

pub fn with_socket(id: FaceId, socket: UdpSocket, dest: SocketAddr) -> Self

Wrap a pre-configured socket. The caller is responsible for binding and joining the multicast group. Useful when SO_REUSEADDR is needed.

Source

pub fn ad_hoc(self) -> Self

Set link type to AdHoc for Wi-Fi IBSS / MANET deployments.

Ad-hoc link type signals to forwarding strategies that not all nodes on the link hear every multicast frame, so multi-access Interest suppression should be disabled.

Source

pub fn dest(&self) -> SocketAddr

Source§

impl MulticastUdpFace

Source

pub async fn recv_with_source(&self) -> Result<(Bytes, SocketAddr), FaceError>

Receive the next NDN packet along with the UDP source address.

Used by the discovery layer to learn the sender’s address and create a unicast reply face — without requiring the sender to embed their address in the Interest payload.

Trait Implementations§

Source§

impl Face for MulticastUdpFace

Source§

async fn recv(&self) -> Result<Bytes, FaceError>

Receive the next NDN packet from any sender on the multicast group.

Source§

async fn recv_with_addr(&self) -> Result<(Bytes, Option<FaceAddr>), FaceError>

Receive packet and expose the UDP source address to the discovery layer.

Source§

async fn send(&self, pkt: Bytes) -> Result<(), FaceError>

Broadcast an NDN packet to the multicast group.

Source§

fn id(&self) -> FaceId

Source§

fn kind(&self) -> FaceKind

Link type of this face. Read more
Source§

fn remote_uri(&self) -> Option<String>

Remote URI (e.g. udp4://192.168.1.1:6363). Returns None for face types that don’t have a meaningful remote endpoint.
Source§

fn local_uri(&self) -> Option<String>

Local URI (e.g. unix:///run/nfd/nfd.sock). Returns None for face types that don’t expose local binding info.

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<F> ErasedFace for F
where F: Face,

Source§

fn id(&self) -> FaceId

Source§

fn kind(&self) -> FaceKind

Source§

fn remote_uri(&self) -> Option<String>

Source§

fn local_uri(&self) -> Option<String>

Source§

fn send_bytes( &self, pkt: Bytes, ) -> Pin<Box<dyn Future<Output = Result<(), FaceError>> + Send + '_>>

Source§

fn recv_bytes( &self, ) -> Pin<Box<dyn Future<Output = Result<Bytes, FaceError>> + Send + '_>>

Source§

fn recv_bytes_with_addr( &self, ) -> Pin<Box<dyn Future<Output = Result<(Bytes, Option<FaceAddr>), FaceError>> + Send + '_>>

Object-safe version of Face::recv_with_addr. 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.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

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