Protocols routing(7P)
NAME
routing - system support for packet network routing
DESCRIPTION
The network facilities provide general packet routing. The
routing interface described here can be used to maintain the
system's IPv4 routing table. It has been maintained for com-
patibility with older applications. The recommended inter-
face for maintaining the system's routing tables is the
routing socket, described at route(7P). The routing socket
can be used to manipulate both the IPv4 and IPv6 routing
tables of the system. 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) com-
mands, SIOCADRT and SIOCDELRT. These commands allow the
addition and deletion of a single routing table entry,
respectively. Routing table manipulations may only be car-
ried out by privileged user.
A routing table entry has the following form, as defined in
/usr/include/net/route.h:
struct rtentry {
unitt rthash; /* to speed lookups */
struct sockaddr rtdst; /* key */
struct sockaddr rtgateway; /* value */
short rtflags; /* up/down?, host/net */
short rtrefcnt; /* # held references */
unitt rtuse; /* raw # packets forwarded */
/*
* The kernel does not use this field, and without it the structure is
* datamodel independent.
*/
#if !defined(KERNEL)
struct ifnet *rtifp; /* the answer: interface to use */
#endif /* !defined(KERNEL) */
};
with rtflags defined from:
SunOS 5.11 Last change: 9 Nov 1999 1
Protocols routing(7P)
#define RTFUP 0x1 /* route usable */
#define RTFGATEWAY 0x2 /* destination is a gateway */
#define RTFHOST 0x4 /* host entry (net otherwise) */
There are three types of routing table entries: those for a
specific host, those for all hosts on a specific network,
and those for any destination not matched by entries of the
first two types, called a wildcard route. Each network
interface installs a routing table entry when it is ini-
tialized. Normally the interface specifies if 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 dif-
ferent from the eventual recipient; essentially, 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, meaning its 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/ip
device.
The rtuse 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.
ERORS
EXIST A request was made to duplicate an existing
entry.
SunOS 5.11 Last change: 9 Nov 1999 2
Protocols routing(7P)
ESRCH A request was made to delete a non-existent
entry.
ENOBUFS Insufficient resources were available to
install a new route.
ENOMEM Insufficient resources were available to
install a new route.
ENETUNREACH The gateway is not directly reachable. For
example, it does not match the
destination/subnet on any of the network
interfaces.
FILES
/dev/ip IP device driver
SEE ALSO
route(1M), ioctl(2), route(7P)
SunOS 5.11 Last change: 9 Nov 1999 3
|