VNET (Virtual Network Protocol)
VNET is a virtual protocol which manages multiple physical network protocols. When opened with an IP address, VNET determines if the host can be reached directly on one of its physical networks. If it can, a session on that network is opened. If it can not be directly reached, an ERR_XOBJ is returned.
VNET sits above pairs of network protocols (one per interface) and ARP protocols. When opened with a remote IP address, VNET compares the net number with that of its lower protocols to determine if the host can be reached directly on a local network, opening the appropriate interface protocol (if possible.)
If opened with an IP broadcast address, VNET will determine which networks are matched by the broadcast address and will open a lower session on each of those networks. A push on a VNET broadcast session will result in a push on all of these lower network sessions.
Use of the IP broadcast address 255.255.255.255 will result in a VNET session which broadcasts on all of the local networks.
VNET is in the ASYNC realm.
VNET removes a pointer to an IPhost from the top of the stack of the remote participant. Only the remote participant is processed. New participants are created for opening the lower network protocols.
Determines the address class of the given IP host. The address class is one of the following:
Indicate the number of interfaces used by the VNET protocol (protocol only.)
Indicates (through the xControl return value) whether the given host is on one of VNET's interfaces. When performed on a session, only those interfaces active on that session will be considered (a typical VNET session only uses one interface, though a broadcast session may have more than one.) When performed on a protocol, all interfaces are considered.
Returns sizeof(IPhost) if it is on a local network, 0 if it is not.
Indicates (through the xControl return value) whether the given host is an address which might be used to reach this host on VNET's local networks (i.e., if the address is one of this host's IP addresses or is a broadcast address.) Returns sizeof(IPhost) if it is local (or broadcast), 0 if it is not.
VNET expects its lower protocols to be configured in network/ARP pairs:
name=vnet protocols=eth/1,arp/1,eth/2,arp/2;
Ed Menze