next up previous contents index
Next: VDROP Up: Protocol Specifications Previous: VDELAY

VNET

NAME

VNET (Virtual Network Protocol)

SPECIFICATION

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.

SYNOPSIS

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.

REALM

VNET is in the ASYNC realm.

PARTICIPANTS

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.

CONTROL OPERATIONS

VNET_GETADDRCLASS:

Determines the address class of the given IP host. The address class is one of the following:

LOCAL_ADDR_C:
An address for the local host.

REMOTE_HOST_ADDR_C:
Remote host directly reachable on a local net.

REMOTE_NET_ADDR_C:
Remote host on a remote network.

BCAST_LOCAL_ADDR_C:
255.255.255.255 -- broadcast address for all local nets.

BCAST_NET_ADDR_C:
Broadcast address for a single network or a single subnet (if subnets are being used.)

BCAST_SUBNET_ADDR_C:
Broadcast for a network (more than a single subnet) when subnets are being used.

Input:
VnetClassBuf == { int class; IPhost host; }
Output:
VnetClassBuf

VNET_GETNUMINTERFACES:

Indicate the number of interfaces used by the VNET protocol (protocol only.)

Input:
none
Output:
int

VNET_HOSTONLOCALNET:

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.

Input:
IPhost
Output:
none

VNET_GETINTERFACEID:
Returns an opaque identifier indicating the interface used by this session. This identifier may be used in subsequent VNET_DISABLEINTERFACE and VNET_ENABLEINTERFACE calls. This operation will fail (and return 0) if performed on a broadcast session with more than one interface. Broadcast sessions never process incoming packets, however, so this operation will always succeed when performed on a session delivering incoming packets. (Session only.)

Input:
none
Output:
VOID *

VNET_DISABLEINTERFACE:
The session will no longer send messages out over the interface corresponding to the given interface identifier. (Session only.)

Input:
VOID *
Output:
none

VNET_ENABLEINTERFACE:
Undoes the effect of a previous VNET_DISABLEINTERFACE (Session only.)

Input:
VOID *
Output:
none

VNET_ISMYADDR:

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.

Input:
IPhost
Output:
none

CONFIGURATION

VNET expects its lower protocols to be configured in network/ARP pairs:

name=vnet protocols=eth/1,arp/1,eth/2,arp/2;

AUTHOR

Ed Menze



next up previous contents index
Next: VDROP Up: Protocol Specifications Previous: VDELAY



Larry Peterson
Tue Jul 1 14:50:34 MST 1997