pub trait VirtualNetworking:
    Debug
    + Send
    + Sync
    + 'static {
Show 19 methods
    // Provided methods
    fn bridge<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        network: &'life1 str,
        access_token: &'life2 str,
        security: StreamSecurity,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait { ... }
    fn unbridge<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn dhcp_acquire<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<IpAddr>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn ip_add<'life0, 'async_trait>(
        &'life0 self,
        ip: IpAddr,
        prefix: u8,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn ip_remove<'life0, 'async_trait>(
        &'life0 self,
        ip: IpAddr,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn ip_clear<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn ip_list<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<IpCidr>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn mac<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<[u8; 6]>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn gateway_set<'life0, 'async_trait>(
        &'life0 self,
        ip: IpAddr,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn route_add<'life0, 'async_trait>(
        &'life0 self,
        cidr: IpCidr,
        via_router: IpAddr,
        preferred_until: Option<Duration>,
        expires_at: Option<Duration>,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn route_remove<'life0, 'async_trait>(
        &'life0 self,
        cidr: IpAddr,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn route_clear<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn route_list<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<IpRoute>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn bind_raw<'life0, 'async_trait>(
        &'life0 self,
    ) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualRawSocket + Sync>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn listen_tcp<'life0, 'async_trait>(
        &'life0 self,
        addr: SocketAddr,
        only_v6: bool,
        reuse_port: bool,
        reuse_addr: bool,
    ) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualTcpListener + Sync>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn bind_udp<'life0, 'async_trait>(
        &'life0 self,
        addr: SocketAddr,
        reuse_port: bool,
        reuse_addr: bool,
    ) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualUdpSocket + Sync>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn bind_icmp<'life0, 'async_trait>(
        &'life0 self,
        addr: IpAddr,
    ) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualIcmpSocket + Sync>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn connect_tcp<'life0, 'async_trait>(
        &'life0 self,
        addr: SocketAddr,
        peer: SocketAddr,
    ) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualTcpSocket + Sync>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn resolve<'life0, 'life1, 'async_trait>(
        &'life0 self,
        host: &'life1 str,
        port: Option<u16>,
        dns_server: Option<IpAddr>,
    ) -> Pin<Box<dyn Future<Output = Result<Vec<IpAddr>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
}Expand description
An implementation of virtual networking
Provided Methods§
sourcefn bridge<'life0, 'life1, 'life2, 'async_trait>(
    &'life0 self,
    network: &'life1 str,
    access_token: &'life2 str,
    security: StreamSecurity,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
    'life1: 'async_trait,
    'life2: 'async_trait,
 
fn bridge<'life0, 'life1, 'life2, 'async_trait>(
    &'life0 self,
    network: &'life1 str,
    access_token: &'life2 str,
    security: StreamSecurity,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
    'life1: 'async_trait,
    'life2: 'async_trait,
Bridges this local network with a remote network, which is required in order to make lower level networking calls (such as UDP/TCP)
sourcefn unbridge<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn unbridge<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Disconnects from the remote network essentially unbridging it
sourcefn dhcp_acquire<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<IpAddr>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn dhcp_acquire<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<IpAddr>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Acquires an IP address on the network and configures the routing tables
sourcefn ip_add<'life0, 'async_trait>(
    &'life0 self,
    ip: IpAddr,
    prefix: u8,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn ip_add<'life0, 'async_trait>(
    &'life0 self,
    ip: IpAddr,
    prefix: u8,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Adds a static IP address to the interface with a netmask prefix
sourcefn ip_remove<'life0, 'async_trait>(
    &'life0 self,
    ip: IpAddr,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn ip_remove<'life0, 'async_trait>(
    &'life0 self,
    ip: IpAddr,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Removes a static (or dynamic) IP address from the interface
sourcefn ip_clear<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn ip_clear<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Clears all the assigned IP addresses for this interface
sourcefn ip_list<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<IpCidr>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn ip_list<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<IpCidr>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Lists all the IP addresses currently assigned to this interface
sourcefn mac<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<[u8; 6]>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn mac<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<[u8; 6]>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Returns the hardware MAC address for this interface
sourcefn gateway_set<'life0, 'async_trait>(
    &'life0 self,
    ip: IpAddr,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn gateway_set<'life0, 'async_trait>(
    &'life0 self,
    ip: IpAddr,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Adds a default gateway to the routing table
sourcefn route_add<'life0, 'async_trait>(
    &'life0 self,
    cidr: IpCidr,
    via_router: IpAddr,
    preferred_until: Option<Duration>,
    expires_at: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn route_add<'life0, 'async_trait>(
    &'life0 self,
    cidr: IpCidr,
    via_router: IpAddr,
    preferred_until: Option<Duration>,
    expires_at: Option<Duration>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Adds a specific route to the routing table
sourcefn route_remove<'life0, 'async_trait>(
    &'life0 self,
    cidr: IpAddr,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn route_remove<'life0, 'async_trait>(
    &'life0 self,
    cidr: IpAddr,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Removes a routing rule from the routing table
sourcefn route_clear<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn route_clear<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Clears the routing table for this interface
sourcefn route_list<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<IpRoute>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn route_list<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<IpRoute>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Lists all the routes defined in the routing table for this interface
sourcefn bind_raw<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualRawSocket + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn bind_raw<'life0, 'async_trait>(
    &'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualRawSocket + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Creates a low level socket that can read and write Ethernet packets directly to the interface
sourcefn listen_tcp<'life0, 'async_trait>(
    &'life0 self,
    addr: SocketAddr,
    only_v6: bool,
    reuse_port: bool,
    reuse_addr: bool,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualTcpListener + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn listen_tcp<'life0, 'async_trait>(
    &'life0 self,
    addr: SocketAddr,
    only_v6: bool,
    reuse_port: bool,
    reuse_addr: bool,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualTcpListener + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Lists for TCP connections on a specific IP and Port combination Multiple servers (processes or threads) can bind to the same port if they each set the reuse-port and-or reuse-addr flags
sourcefn bind_udp<'life0, 'async_trait>(
    &'life0 self,
    addr: SocketAddr,
    reuse_port: bool,
    reuse_addr: bool,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualUdpSocket + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn bind_udp<'life0, 'async_trait>(
    &'life0 self,
    addr: SocketAddr,
    reuse_port: bool,
    reuse_addr: bool,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualUdpSocket + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Opens a UDP socket that listens on a specific IP and Port combination Multiple servers (processes or threads) can bind to the same port if they each set the reuse-port and-or reuse-addr flags
sourcefn bind_icmp<'life0, 'async_trait>(
    &'life0 self,
    addr: IpAddr,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualIcmpSocket + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn bind_icmp<'life0, 'async_trait>(
    &'life0 self,
    addr: IpAddr,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualIcmpSocket + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Creates a socket that can be used to send and receive ICMP packets from a paritcular IP address
sourcefn connect_tcp<'life0, 'async_trait>(
    &'life0 self,
    addr: SocketAddr,
    peer: SocketAddr,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualTcpSocket + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
 
fn connect_tcp<'life0, 'async_trait>(
    &'life0 self,
    addr: SocketAddr,
    peer: SocketAddr,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn VirtualTcpSocket + Sync>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
Opens a TCP connection to a particular destination IP address and port
sourcefn resolve<'life0, 'life1, 'async_trait>(
    &'life0 self,
    host: &'life1 str,
    port: Option<u16>,
    dns_server: Option<IpAddr>,
) -> Pin<Box<dyn Future<Output = Result<Vec<IpAddr>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
    'life1: 'async_trait,
 
fn resolve<'life0, 'life1, 'async_trait>(
    &'life0 self,
    host: &'life1 str,
    port: Option<u16>,
    dns_server: Option<IpAddr>,
) -> Pin<Box<dyn Future<Output = Result<Vec<IpAddr>>> + Send + 'async_trait>>where
    Self: 'async_trait,
    'life0: 'async_trait,
    'life1: 'async_trait,
Performs DNS resolution for a specific hostname
Implementors§
impl VirtualNetworking for RemoteNetworkingClient
remote only.impl VirtualNetworking for LocalNetworking
host-net only.impl VirtualNetworking for LoopbackNetworking
impl VirtualNetworking for RemoteNetworkingServer
remote only.