routing(4) UNIX System V(Internet Utilities) routing(4)
NAME
routing - system supporting for packet network routing
DESCRIPTION
The network facilities provide general packet routing. Routing table
maintenance may be implemented in applications processes.
A simple set of data structures compose a routing table used in selecting
the appropriate network interface when transmitting packets. This table
contains a single entry for each route to a specific network or host.
The routing table was designed to support routing for the Internet
Protocol (IP), but its implementation is protocol independent and thus it
may serve other protocols as well. User programs may manipulate this
data base with the aid of two ioctl(2) commands, SIOCADDRT and SIOCDELRT.
These commands allow the addition and deletion of a single routing table
entry, respectively. Routing table manipulations may only be carried out
by privileged user.
A routing table entry has the following form, as defined in
/usr/include/net/route.h:
struct rtentry {
ulong rthash; /* to speed lookups */
struct sockaddr rtdst;/* key */
struct sockaddr rtgateway;/* value */
short rtflags; /* up/down?, host/net */
short rtrefcnt; /* # held references */
ulong rtuse; /* raw # packets forwarded */
#ifdef STRNET
struct ipprovider *rtprov;/* the answer: provider to use */
#else
struct ifnet *rtifp;/* the answer: interface to use */
#endif /* STRNET */
};
with rt_flags defined from:
#define RTFUP 0x1/* route usable */
#define RTFGATEWAY 0x2/* destination is a gateway */
#define RTFHOST 0x4/* host entry (net otherwise) */
Routing table entries come in three flavors: for a specific host, for all
hosts on a specific network, for any destination not matched by entries
of the first two types (a wildcard route). Each network interface
installs a routing table entry when it it is initialized. Normally the
interface specifies the route through it is a direct connection to the
destination host or network. If the route is direct, the transport layer
of a protocol family usually requests the packet be sent to the same host
specified in the packet. Otherwise, the interface may be requested to
address the packet to an entity different from the eventual recipient
(that is, the packet is forwarded).
10/89 Page 1
routing(4) UNIX System V(Internet Utilities) routing(4)
Routing table entries installed by a user process may not specify the
hash, reference count, use, or interface fields; these are filled in by
the routing routines. If a route is in use when it is deleted (rtrefcnt
is non-zero), the resources associated with it will not be reclaimed
until all references to it are removed.
User processes read the routing tables through the /dev/kmem device.
The rt_use field contains the number of packets sent along the route.
This value is used to select among multiple routes to the same
destination. When multiple routes to the same destination exist, the
least used route is selected.
A wildcard routing entry is specified with a zero destination address
value. Wildcard routes are used only when the system fails to find a
route to the destination host and network. The combination of wildcard
routes and routing redirects can provide an economical mechanism for
routing traffic.
FILES
/dev/kmem
SEE ALSO
ioctl(2), route(1M), routed(1M)
DIAGNOSTICS
EEXIST A request was made to duplicate an existing entry.
ESRCH A request was made to delete a non-existent entry.
ENOBUFS Insufficient resources were available to install a
new route.
Page 2 10/89