Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
routing(7P)			   Protocols			   routing(7P)

NAME
       routing - system	support	for packet network routing

DESCRIPTION
       The  network facilities provide general packet routing. The routing in-
       terface described here can be used to maintain the system's IPv4	 rout-
       ing table. It has been maintained for compatibility with	older applica-
       tions. 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 applica-
       tions processes.

       A simple	set of data structures compose a "routing table" used  in  se-
       lecting	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 In-
       ternet Protocol (IP), but its implementation  is	 protocol  independent
       and thus	it may serve other protocols as	well. User programs may	manip-
       ulate this data base with the aid of two	ioctl(2)  commands,  SIOCADDRT
       and SIOCDELRT. These commands allow the addition	and deletion of	a sin-
       gle 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/in-
       clude/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 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 for-
       warded.

       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 destina-
       tion. 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.9			  9 Nov	1999			   routing(7P)

NAME | DESCRIPTION | ERRORS | FILES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=routing&sektion=7p&manpath=SunOS+5.9>

home | help