route(8) [bsd man page]
ROUTE(8) System Manager's Manual ROUTE(8) NAME
route - manually manipulate the routing tables SYNOPSIS
/sbin/route [ -f ] [ -n ] [ command args ] DESCRIPTION
Route is a program used to manually manipulate the network routing tables. It normally is not needed, as the system routing table manage- ment daemon, routed(8), should tend to this task. Route accepts two commands: add, to add a route, and delete, to delete a route. All commands have the following syntax: /sbin/route command [ net | host ] destination gateway [ metric ] where destination is the destination host or network, gateway is the next-hop gateway to which packets should be addressed, and metric is a count indicating the number of hops to the destination. The metric is required for add commands; it must be zero if the destination is on a directly-attached network, and nonzero if the route utilizes one or more gateways. If adding a route with metric 0, the gateway given is the address of this host on the common network, indicating the interface to be used for transmission. Routes to a particular host are dis- tinguished from those to a network by interpreting the Internet address associated with destination. The optional keywords net and host force the destination to be interpreted as a network or a host, respectively. Otherwise, if the destination has a ``local address part'' of INADDR_ANY, or if the destination is the symbolic name of a network, then the route is assumed to be to a network; otherwise, it is pre- sumed to be a route to a host. If the route is to a destination connected via a gateway, the metric should be greater than 0. All sym- bolic names specified for a destination or gateway are looked up first as a host name using gethostbyname(3N). If this lookup fails, get- netbyname(3N) is then used to interpret the name as that of a network. Route uses a raw socket and the SIOCADDRT and SIOCDELRT ioctl's to do its work. As such, only the super-user may modify the routing tables. If the -f option is specified, route will ``flush'' the routing tables of all gateway entries. If this is used in conjunction with one of the commands described above, the tables are flushed prior to the command's application. The -n option prevents attempts to print host and network names symbolically when reporting actions. DIAGNOSTICS
``add [ host | network ] %s: gateway %s flags %x'' The specified route is being added to the tables. The values printed are from the routing table entry supplied in the ioctl call. If the gateway address used was not the primary address of the gateway (the first one returned by gethostbyname), the gateway address is printed numerically as well as symbolically. ``delete [ host | network ] %s: gateway %s flags %x'' As above, but when deleting an entry. ``%s %s done'' When the -f flag is specified, each routing table entry deleted is indicated with a message of this form. ``Network is unreachable'' An attempt to add a route failed because the gateway listed was not on a directly-connected network. The next-hop gateway must be given. ``not in table'' A delete operation was attempted for an entry which wasn't present in the tables. ``routing table overflow'' An add operation was attempted, but the system was low on resources and was unable to allocate memory to create the new entry. SEE ALSO
intro(4N), routed(8), XNSrouted(8) 4.2 Berkeley Distribution November 16, 1996 ROUTE(8)
Check Out this Related Man Page
routing(7P) 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 rout- ing table. It has been maintained for compatibility with older applications. The recommended interface 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) 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 { unit_t rt_hash; /* to speed lookups */ struct sockaddr rt_dst; /* key */ struct sockaddr rt_gateway; /* value */ short rt_flags; /* up/down?, host/net */ short rt_refcnt; /* # held references */ unit_t rt_use; /* raw # packets forwarded */ /* * The kernel does not use this field, and without it the structure is * datamodel independent. */ #if !defined(_KERNEL) struct ifnet *rt_ifp; /* the answer: interface to use */ #endif /* !defined(_KERNEL) */ }; with rt_flags defined from: #define RTF_UP 0x1 /* route usable */ #define RTF_GATEWAY 0x2 /* destination is a gateway */ #define RTF_HOST 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 initialized. 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 different 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 rt_refcnt 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 rt_use 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. ERRORS
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. 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.10 9 Nov 1999 routing(7P)