pub trait VirtualNetworking: Debug + Send + Sync + 'static {
Show 21 methods fn ws_connect(&self, url: &str) -> Result<Box<dyn VirtualWebSocket + Sync>>; fn http_request(
        &self,
        url: &str,
        method: &str,
        headers: &str,
        gzip: bool
    ) -> Result<SocketHttpRequest>; fn bridge(
        &self,
        network: &str,
        access_token: &str,
        security: StreamSecurity
    ) -> Result<()>; fn unbridge(&self) -> Result<()>; fn dhcp_acquire(&self) -> Result<Vec<IpAddr>>; fn ip_add(&self, ip: IpAddr, prefix: u8) -> Result<()>; fn ip_remove(&self, ip: IpAddr) -> Result<()>; fn ip_clear(&self) -> Result<()>; fn ip_list(&self) -> Result<Vec<IpCidr>>; fn mac(&self) -> Result<[u8; 6]>; fn gateway_set(&self, ip: IpAddr) -> Result<()>; fn route_add(
        &self,
        cidr: IpCidr,
        via_router: IpAddr,
        preferred_until: Option<Duration>,
        expires_at: Option<Duration>
    ) -> Result<()>; fn route_remove(&self, cidr: IpAddr) -> Result<()>; fn route_clear(&self) -> Result<()>; fn route_list(&self) -> Result<Vec<IpRoute>>; fn bind_raw(&self) -> Result<Box<dyn VirtualRawSocket + Sync>>; fn listen_tcp(
        &self,
        addr: SocketAddr,
        only_v6: bool,
        reuse_port: bool,
        reuse_addr: bool
    ) -> Result<Box<dyn VirtualTcpListener + Sync>>; fn bind_udp(
        &self,
        addr: SocketAddr,
        reuse_port: bool,
        reuse_addr: bool
    ) -> Result<Box<dyn VirtualUdpSocket + Sync>>; fn bind_icmp(
        &self,
        addr: IpAddr
    ) -> Result<Box<dyn VirtualIcmpSocket + Sync>>; fn connect_tcp(
        &self,
        addr: SocketAddr,
        peer: SocketAddr,
        timeout: Option<Duration>
    ) -> Result<Box<dyn VirtualTcpSocket + Sync>>; fn resolve(
        &self,
        host: &str,
        port: Option<u16>,
        dns_server: Option<IpAddr>
    ) -> Result<Vec<IpAddr>>;
}
Expand description

An implementation of virtual networking

Required Methods§

Establishes a web socket connection (note: this does not use the virtual sockets and is standalone functionality that works without the network being connected)

Makes a HTTP request to a remote web resource The headers are separated by line breaks (note: this does not use the virtual sockets and is standalone functionality that works without the network being connected)

Bridges this local network with a remote network, which is required in order to make lower level networking calls (such as UDP/TCP)

Disconnects from the remote network essentially unbridging it

Acquires an IP address on the network and configures the routing tables

Adds a static IP address to the interface with a netmask prefix

Removes a static (or dynamic) IP address from the interface

Clears all the assigned IP addresses for this interface

Lists all the IP addresses currently assigned to this interface

Returns the hardware MAC address for this interface

Adds a default gateway to the routing table

Adds a specific route to the routing table

Removes a routing rule from the routing table

Clears the routing table for this interface

Lists all the routes defined in the routing table for this interface

Creates a low level socket that can read and write Ethernet packets directly to the interface

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

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

Creates a socket that can be used to send and receive ICMP packets from a paritcular IP address

Opens a TCP connection to a particular destination IP address and port

Performs DNS resolution for a specific hostname

Implementors§