routing(4) FILE FORMATS 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 Pro-
tocol (IP), but its implementation is protocol independent
and thus it may serve other protocols as well. User pro-
grams 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 destina-
tion not matched by entries of the first two types (a wild-
card route). Each network interface installs a routing
table entry when it it is initialized. Normally the inter-
face specifies the route through it is a direct connection
to the destination host or network. If the route is direct,
1
routing(4) FILE FORMATS routing(4)
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).
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 destina-
tion 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.
2