Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ routing(4) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

route(1M)

routed(1M)

ioctl(2)

routing(4)                                                       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 net-
     work 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 pro-
     grams may manipulate this data base with the aid of two ioctl(2) com-
     mands, 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, subnetmask */
         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 */
         ulong  rtsubnetmask;         /* subnet mask */
     };

     with rtflags defined from:

     #define   RTFUP          0x1     /* route usable */
     #define   RTFGATEWAY     0x2     /* destination is a gateway */
     #define   RTFHOST        0x4     /* host entry (net otherwise) */
     #define   RTFSTATIC      0x800   /* mark route as static */
     #define   RTFNOCHECKSUM 0x1000  /* no need to compute  UDP checksums */
     #define   RTFSUBNETMASK  0x2000  /* use subnet mask of route */

     Applications using the old rtentry structure (i.e. without the
     rtsubnetmask field) run without changes. There is no need to recom-
     pile these applications.







Page 1                       Reliant UNIX 5.44                Printed 11/98

routing(4)                                                       routing(4)

     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 inter-
     face installs a routing table entry when it it is initialized. Nor-
     mally the interface specifies the route through it is a "direct" con-
     nection 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 (that is, the packet is forwarded).

     The user may supply a subnet mask different from the default netmask
     of the network interface. If a subnet mask is supplied, the
     RTFSUBNETMASK flag must be set in rtflags, otherwise the subnet mask
     is ignored and the netmask of the network interface is used.

     Routing table entries installed by the route(1M) command are marked as
     static (i.e. the RTFSTATIC flag is set. This prevents the route from
     being removed by a routing daemon.

     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 rtuse field contains the number of packets sent along the route.
     This value is used to select among multiple routes to the same desti-
     nation. 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.

DIAGNOSTICS
     EEXIST     A request was made to duplicate an existing entry.

     ESRCH      A request was made to delete a non-existent entry.

     ENOBUFS    The resources available were not sufficient to install a
                new route.








Page 2                       Reliant UNIX 5.44                Printed 11/98

routing(4)                                                       routing(4)

FILES
     /dev/kmem

SEE ALSO
     route(1M), routed(1M), ioctl(2).

















































Page 3                       Reliant UNIX 5.44                Printed 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026