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

FreeBSD Manual Pages


home | help
ROUTE(8)		  BSD System Manager's Manual		      ROUTE(8)

     route -- manually manipulate the routing tables

     route [-fnqSsv] command [[modifiers] args]

     route is a	utility	used to	manually manipulate the	network	routing	ta-
     bles.  Except for setting up the default route, it	is normally not
     needed, as	a system routing table management daemon such as routed(8),
     should tend to this task.

     route can be used to modify nearly	any aspect of the routing policy, ex-
     cept packet forwarding, which can be manipulated through the sysctl(8)

     The route utility supports	a limited number of general options, but a
     rich command language, enabling the user to specify any arbitrary request
     that could	be delivered via the programmatic interface discussed in

     -f	     Remove all	routes (as per flush).	If used	in conjunction with
	     the add, change, delete or	get commands, route removes the	routes
	     before performing the command.

     -n	     Bypasses attempts to print	host and network names symbolically
	     when reporting actions.  (The process of translating between sym-
	     bolic names and numerical equivalents can be quite	time consum-
	     ing, and may require correct operation of the network; thus it
	     may be expedient to forgo this, especially	when attempting	to re-
	     pair networking operations).

     -q	     Suppress all output from commands that manipulate the routing ta-

     -S	     Print a space when	a flag is missing so that flags	are vertically
	     aligned instead of	printing the flags that	are set	as a contigu-
	     ous string.

     -s	     (short) Suppresses	all output from	a get command except for the
	     actual gateway that will be used.	How the	gateway	is printed de-
	     pends on the type of route	being looked up.

     -v	     (verbose) Print additional	details.

     The route utility provides	several	commands:

     add	 Add a route.
     flush	 Remove	all routes.
     flushall	 Remove	all routes including the default gateway.
     delete	 Delete	a specific route.
     change	 Change	aspects	of a route (such as its	gateway).
     get	 Lookup	and display the	route for a destination.
     show	 Print out the route table similar to "netstat -r" (see
     monitor	 Continuously report any changes to the	routing	information
		 base, routing lookup misses, or suspected network partition-

     The monitor command has the syntax

	   route [-n] monitor

     The flush command has the syntax

	   route [-n] flush [family]

     If	the flush command is specified,	route will ``flush'' the routing ta-
     bles of all gateway entries.  When	the address family is specified	by any
     of	the -osi, -xns,	-atalk,	-inet, -inet6, or -mpls	modifiers, only	routes
     having destinations with addresses	in the delineated family will be ma-

     The other commands	have the following syntax:

	   route [-n] command [-net | -host] destination gateway

     where destination is the destination host or network, and gateway is the
     next-hop intermediary via which packets should be routed.	Routes to a
     particular	host may be distinguished from those to	a network by inter-
     preting the Internet address specified as the destination argument.  The
     optional modifiers	-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 sym-
     bolic name	of a network, then the route is	assumed	to be to a network;
     otherwise,	it is presumed to be a route to	a host.	 Optionally, the
     destination can also be specified in the net/bits format.

     For example, 128.32 is interpreted	as -host; 128.32.130	is in-
     terpreted as -host; -net 128.32 is interpreted as; and -net 128.32.130 is	interpreted as

     The keyword default can be	used as	the destination	to set up a default
     route to a	smart gateway.	If no other routes match, this default route
     will be used as a last resort.

     If	the destination	is directly reachable via an interface requiring no
     intermediary system to act	as a gateway, the -interface modifier should
     be	specified; the gateway given is	the address of this host on the	common
     network, indicating the interface to be used for transmission.

     The optional modifiers -xns, -osi,	-atalk,	and -link specify that all
     subsequent	addresses are in the XNS, OSI, or AppleTalk address families,
     or	are specified as link-level addresses in the form described in
     link_addr(3), and the names must be numeric specifications	rather than
     symbolic names.

     The optional modifiers -mpls and -tag specify that	all subsequent ad-
     dresses are in the	MPLS address family.  See mpls(4) for examples about
     setting routes involving MPLS.

     The optional -netmask qualifier is	intended to achieve the	effect of an
     OSI ESIS redirect with the	netmask	option,	or to manually add subnet
     routes with netmasks different from that of the implied network interface
     (as would otherwise be communicated using the OSPF	or ISIS	routing	proto-
     cols).  One specifies an additional ensuing address parameter (to be in-
     terpreted as a network mask).  The	implicit network mask generated	in the
     AF_INET case can be overridden by making sure this	option follows the
     destination parameter.  -prefixlen	is also	available for similar purpose,
     in	IPv4 and IPv6 case.

     Routes have associated flags which	influence operation of the protocols
     when sending to destinations matched by the routes.  These	flags may be
     set (or sometimes cleared)	by indicating the following corresponding mod-

     -cloning	   RTF_CLONING	  - generates a	new route on use
     -nocloning	  ~RTF_CLONING	  - stop generating new	routes on use
     -cloned	   RTF_CLONED	  - cloned route generated by RTF_CLONING
     -nocloned	  ~RTF_CLONED	  - prevent removal with RTF_CLONING parent
     -xresolve	   RTF_XRESOLVE	  - emit mesg on use (for external lookup)
     -iface	  ~RTF_GATEWAY	  - destination	is directly reachable
     -static	   RTF_STATIC	  - manually added route
     -nostatic	  ~RTF_STATIC	  - pretend route added	by kernel or daemon
     -reject	   RTF_REJECT	  - emit an ICMP unreachable when matched
     -noreject	  ~RTF_REJECT	  - clear reject flag
     -blackhole	   RTF_BLACKHOLE  - silently discard pkts (during updates)
     -noblackhole ~RTF_BLACKHOLE  - clear blackhole flag
     -proto1	   RTF_PROTO1	  - set	protocol specific routing flag #1
     -proto2	   RTF_PROTO2	  - set	protocol specific routing flag #2
     -llinfo	   RTF_LLINFO	  - validly translates proto addr to link addr
     -proxy	   RTF_ANNOUNCE	  - make entry a link level proxy

     The optional modifiers -rtt, -rttvar, -sendpipe, -recvpipe, -mtu,
     -hopcount,	-expire, and -ssthresh provide initial values to quantities
     maintained	in the routing entry by	transport level	protocols, such	as TCP
     or	TP4.  These may	be individually	locked by preceding each such modifier
     to	be locked by the -lock meta-modifier, or one can specify that all en-
     suing metrics may be locked by the	-lockrest meta-modifier.

     In	a change or add	command	where the destination and gateway are not suf-
     ficient to	specify	the route (as in the ISO case where several interfaces
     may have the same address), the -ifp or -ifa modifiers may	be used	to de-
     termine the interface or interface	address.

     All symbolic names	specified for a	destination or gateway are looked up
     first as a	host name using	gethostbyname(3).  If this lookup fails,
     getnetbyname(3) is	then used to interpret the name	as that	of a network.

     route uses	a routing socket and the new message types RTM_ADD,
     RTM_DELETE, RTM_GET, and RTM_CHANGE.  As such, only the super-user	may
     modify the	routing	tables.

     The route utility exits 0 on success, and >0 if an	error occurs.  This
     includes the use of the get command to look up a route that is incom-

     This sets the default route to
	   route add default
     This shows	all routes, without DNS	resolution (this is useful if the DNS
     is	not available):
	   route -n show
     To	install	a static route through to reach the network, use this:
	   route add -net -netmask

     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(2)
	     call.  If the gateway address used	was not	the primary address of
	     the gateway (the first one	returned by gethostbyname(3)), 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 flush command 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 re-
	     sources and was unable to allocate	memory to create the new en-

     Permission	denied
	     The attempted operation is	privileged.  Only root may modify the
	     routing tables.  These privileges are enforced by the kernel.

     esis(4), mpls(4), netintro(4), route(4), routed(8), sysctl(8)

     The route command appeared	in 4.2BSD.  IPv6 support was added by
     WIDE/KAME project.

     The first paragraph may have slightly exaggerated routed(8)'s abilities.

     Some uses of the -ifa or -ifp modifiers with the add command will incor-
     rectly fail with a	"Network is unreachable" message if there is no	de-
     fault route.  See case RTM_ADD in sys/net/rtsock.c:route_output for de-

BSD				August 6, 2006				   BSD


Want to link to this manual page? Use this URL:

home | help