IpStackStream

Enum IpStackStream 

Source
pub enum IpStackStream {
    Tcp(IpStackTcpStream),
    Udp(IpStackUdpStream),
    UnknownTransport(IpStackUnknownTransport),
    UnknownNetwork(Vec<u8>),
}
Expand description

A network stream accepted by the IP stack.

This enum represents different types of network streams that can be accepted from the TUN device. Each variant provides appropriate abstractions for handling specific protocol types.

§Variants

  • Tcp - A TCP connection stream implementing AsyncRead + AsyncWrite
  • Udp - A UDP stream implementing AsyncRead + AsyncWrite
  • UnknownTransport - A stream for unknown transport layer protocols (e.g., ICMP, IGMP)
  • UnknownNetwork - Raw network layer packets that couldn’t be parsed

Variants§

§

Tcp(IpStackTcpStream)

A TCP connection stream.

§

Udp(IpStackUdpStream)

A UDP stream.

§

UnknownTransport(IpStackUnknownTransport)

A stream for unknown transport protocols.

§

UnknownNetwork(Vec<u8>)

Raw network packets that couldn’t be parsed.

Implementations§

Source§

impl IpStackStream

Source

pub fn local_addr(&self) -> SocketAddr

Returns the local socket address for this stream.

For TCP and UDP streams, this returns the source address of the connection. For unknown transport and network streams, this returns an unspecified address.

§Examples
let local_addr = stream.local_addr();
println!("Local address: {}", local_addr);
Source

pub fn peer_addr(&self) -> SocketAddr

Returns the remote socket address for this stream.

For TCP and UDP streams, this returns the destination address of the connection. For unknown transport and network streams, this returns an unspecified address.

§Examples
let peer_addr = stream.peer_addr();
println!("Peer address: {}", peer_addr);

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