Struct smoltcp::iface::Interface

source ·
pub struct Interface { /* private fields */ }
Expand description

A network interface.

The network interface logically owns a number of other data structures; to avoid a dependency on heap allocation, it instead owns a BorrowMut<[T]>, which can be a &mut [T], or Vec<T> if a heap is available.

Implementations§

source§

impl Interface

source

pub fn join_multicast_group<D, T: Into<IpAddress>>(
&mut self,
device: &mut D,
addr: T,
timestamp: Instant
) -> Result<bool, MulticastError>where
D: Device + ?Sized,

Add an address to a list of subscribed multicast IP addresses.

Returns Ok(announce_sent) if the address was added successfully, where annouce_sent indicates whether an initial immediate announcement has been sent.

source

pub fn leave_multicast_group<D, T: Into<IpAddress>>(
&mut self,
device: &mut D,
addr: T,
timestamp: Instant
) -> Result<bool, MulticastError>where
D: Device + ?Sized,

Remove an address from the subscribed multicast IP addresses.

Returns Ok(leave_sent) if the address was removed successfully, where leave_sent indicates whether an immediate leave packet has been sent.

source

pub fn has_multicast_group<T: Into<IpAddress>>(&self, addr: T) -> bool

Check whether the interface listens to given destination multicast IP address.

source§

impl Interface

source

pub fn new<D>(config: Config, device: &mut D) -> Selfwhere
D: Device + ?Sized,

Create a network interface using the previously provided configuration.

Panics

If a required option is not provided, this function will panic. Required options are:

source

pub fn context(&mut self) -> &mut InterfaceInner

Get the socket context.

The context is needed for some socket methods.

source

pub fn hardware_addr(&self) -> HardwareAddress

Get the HardwareAddress address of the interface.

Panics

This function panics if the medium is not Ethernet or Ieee802154.

source

pub fn set_hardware_addr(&mut self, addr: HardwareAddress)

Set the HardwareAddress address of the interface.

Panics

This function panics if the address is not unicast, and if the medium is not Ethernet or Ieee802154.

source

pub fn ip_addrs(&self) -> &[IpCidr]

Get the IP addresses of the interface.

source

pub fn ipv4_addr(&self) -> Option<Ipv4Address>

Get the first IPv4 address if present.

source

pub fn ipv6_addr(&self) -> Option<Ipv6Address>

Get the first IPv6 address if present.

source

pub fn update_ip_addrs<F: FnOnce(&mut Vec<IpCidr, IFACE_MAX_ADDR_COUNT>)>(
&mut self,
f: F
)

Update the IP addresses of the interface.

Panics

This function panics if any of the addresses are not unicast.

source

pub fn has_ip_addr<T: Into<IpAddress>>(&self, addr: T) -> bool

Check whether the interface has the given IP address assigned.

source

pub fn routes(&self) -> &Routes

source

pub fn routes_mut(&mut self) -> &mut Routes

source

pub fn set_any_ip(&mut self, any_ip: bool)

Enable or disable the AnyIP capability.

AnyIP allowins packets to be received locally on IPv4 addresses other than the interface’s configured [ip_addrs]. When AnyIP is enabled and a route prefix in routes specifies one of the interface’s ip_addrs as its gateway, the interface will accept packets addressed to that prefix.

IPv6

This option is not available or required for IPv6 as packets sent to the interface are not filtered by IPv6 address.

source

pub fn any_ip(&self) -> bool

Get whether AnyIP is enabled.

See set_any_ip for details on AnyIP

source

pub fn sixlowpan_address_context(
&self
) -> &Vec<SixlowpanAddressContext, IFACE_MAX_SIXLOWPAN_ADDRESS_CONTEXT_COUNT>

Get the 6LoWPAN address contexts.

source

pub fn sixlowpan_address_context_mut(
&mut self
) -> &mut Vec<SixlowpanAddressContext, IFACE_MAX_SIXLOWPAN_ADDRESS_CONTEXT_COUNT>

Get a mutable reference to the 6LoWPAN address contexts.

source

pub fn reassembly_timeout(&self) -> Duration

Get the packet reassembly timeout.

source

pub fn set_reassembly_timeout(&mut self, timeout: Duration)

Set the packet reassembly timeout.

source

pub fn poll<D>(
&mut self,
timestamp: Instant,
device: &mut D,
sockets: &mut SocketSet<'_>
) -> boolwhere
D: Device + ?Sized,

Transmit packets queued in the given sockets, and receive packets queued in the device.

This function returns a boolean value indicating whether any packets were processed or emitted, and thus, whether the readiness of any socket might have changed.

source

pub fn poll_at(
&mut self,
timestamp: Instant,
sockets: &SocketSet<'_>
) -> Option<Instant>

Return a soft deadline for calling poll the next time. The Instant returned is the time at which you should call poll next. It is harmless (but wastes energy) to call it before the Instant, and potentially harmful (impacting quality of service) to call it after the Instant

source

pub fn poll_delay(
&mut self,
timestamp: Instant,
sockets: &SocketSet<'_>
) -> Option<Duration>

Return an advisory wait time for calling poll the next time. The Duration returned is the time left to wait before calling poll next. It is harmless (but wastes energy) to call it before the Duration has passed, and potentially harmful (impacting quality of service) to call it after the Duration has passed.

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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 Twhere
U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.