Struct Interface

Source
pub struct Interface {
Show 16 fields pub index: u32, pub name: String, pub friendly_name: Option<String>, pub description: Option<String>, pub if_type: InterfaceType, pub mac_addr: Option<MacAddr>, pub ipv4: Vec<Ipv4Net>, pub ipv6: Vec<Ipv6Net>, pub ipv6_scope_ids: Vec<u32>, pub flags: u32, pub transmit_speed: Option<u64>, pub receive_speed: Option<u64>, pub gateway: Option<NetworkDevice>, pub dns_servers: Vec<IpAddr>, pub mtu: Option<u32>, pub default: bool,
}
Expand description

Structure of Network Interface information

Fields§

§index: u32

Index of network interface. This is an integer which uniquely identifies the interface on this machine.

§name: String

Machine-readable name of the network interface. On unix-like OSs, this is the interface name, like ‘eth0’ or ‘eno1’. On Windows, this is the interface’s GUID as a string.

§friendly_name: Option<String>

Friendly name of network interface. On Windows, this is the network adapter configured name, e.g. “Ethernet 5” or “Wi-Fi”. On Mac, this is the interface display name, such as “Ethernet” or “FireWire”. If no friendly name is available, this is left as None.

§description: Option<String>

Description of the network interface. On Windows, this is the network adapter model, such as “Realtek USB GbE Family Controller #4” or “Software Loopback Interface 1”. Currently this is not available on platforms other than Windows.

§if_type: InterfaceType

Interface Type

§mac_addr: Option<MacAddr>

MAC address of network interface

§ipv4: Vec<Ipv4Net>

List of Ipv4Nets (IPv4 address + netmask) for the network interface

§ipv6: Vec<Ipv6Net>

List of Ipv6Nets (IPv6 address + netmask) for the network interface

§ipv6_scope_ids: Vec<u32>

List of IPv6 Scope IDs for each of the corresponding elements in the ipv6 address vector. The Scope ID is an integer which uniquely identifies this interface address on the system, and must be provided when using link-local addressing to specify which interface you wish to use. The scope ID can be the same as the interface index, but is not required to be by the standard. The scope ID can also be referred to as the zone index.

§flags: u32

Flags for the network interface (OS Specific)

§transmit_speed: Option<u64>

Speed in bits per second of the transmit for the network interface, if known. Currently only supported on Linux, Android, and Windows.

§receive_speed: Option<u64>

Speed in bits per second of the receive for the network interface. Currently only supported on Linux, Android, and Windows.

§gateway: Option<NetworkDevice>

Default gateway for the network interface. This is the address of the router to which IP packets are forwarded when they need to be sent to a device outside of the local network.

§dns_servers: Vec<IpAddr>

DNS server addresses for the network interface

§mtu: Option<u32>

Maximum Transmission Unit (MTU) for the network interface

§default: bool

Whether this is the default interface for accessing the Internet.

Implementations§

Source§

impl Interface

Source

pub fn default() -> Result<Interface, String>

Construct a new default Interface instance

Source

pub fn dummy() -> Interface

Source

pub fn is_up(&self) -> bool

Check if the network interface is up

Source

pub fn is_loopback(&self) -> bool

Check if the network interface is a Loopback interface

Source

pub fn is_point_to_point(&self) -> bool

Check if the network interface is a Point-to-Point interface

Source

pub fn is_multicast(&self) -> bool

Check if the network interface is a Multicast interface

Source

pub fn is_broadcast(&self) -> bool

Check if the network interface is a Broadcast interface

Source

pub fn is_tun(&self) -> bool

Check if the network interface is a TUN interface

Source

pub fn is_running(&self) -> bool

Check if the network interface is running and ready to send/receive packets

Source

pub fn is_physical(&self) -> bool

Check if the network interface is a physical interface

Source

pub fn ipv4_addrs(&self) -> Vec<Ipv4Addr>

Returns a list of IPv4 addresses assigned to this interface.

Source

pub fn ipv6_addrs(&self) -> Vec<Ipv6Addr>

Returns a list of IPv6 addresses assigned to this interface.

Source

pub fn ip_addrs(&self) -> Vec<IpAddr>

Returns a list of all IP addresses (both IPv4 and IPv6) assigned to this interface.

Source

pub fn has_ipv4(&self) -> bool

Returns true if this interface has at least one IPv4 address.

Source

pub fn has_ipv6(&self) -> bool

Returns true if this interface has at least one IPv6 address.

Source

pub fn has_global_ipv4(&self) -> bool

Returns true if this interface has at least one globally routable IPv4 address.

Source

pub fn has_global_ipv6(&self) -> bool

Returns true if this interface has at least one globally routable IPv6 address.

Source

pub fn has_global_ip(&self) -> bool

Returns true if this interface has at least one globally routable IP address (v4 or v6).

Source

pub fn global_ipv4_addrs(&self) -> Vec<Ipv4Addr>

Returns a list of globally routable IPv4 addresses assigned to this interface.

Source

pub fn global_ipv6_addrs(&self) -> Vec<Ipv6Addr>

Returns a list of globally routable IPv6 addresses assigned to this interface.

Source

pub fn global_ip_addrs(&self) -> Vec<IpAddr>

Returns a list of globally routable IP addresses (both IPv4 and IPv6).

Trait Implementations§

Source§

impl Clone for Interface

Source§

fn clone(&self) -> Interface

Returns a copy 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 Debug for Interface

Source§

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

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

impl Hash for Interface

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Interface

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Interface

Source§

impl StructuralPartialEq for Interface

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> 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.