The UNIX route command is the generic interface to manipulate the kernel's IP routing table or cache. It essentially can add, delete, and monitor entries and can flush the entire forwarding table. The tool works a little bit differently on Linux systems. In addition, Linux provides the alternative ip utility from the iproute2 package with everything under one hood.
NOTE
You can retrieve everything there is to know about adding and deleting routes from the following man pages on BSD and Linux systems: route(4), route(8), rtentry(9), rtalloc(9), arp(4), arp(8), ifconfig(8). For Linux systems, you can access further information from the structures of the proc system and the manual page proc(5).
Example 8-1 shows the commands necessary to access routing-relevant proc information on Linux systems; Example 8-2 is a reminder of the routing table flags on Linux and FreeBSD as described by the route and netstat manual pages. These flags are implementation-specific, as is the representation of the routing table on NetBSD, FreeBSD, OpenBSD, and Linux. Specific details can be derived only from inspecting the kernel code.
[root@callisto:~#] cat /proc/net/route [root@callisto:~#] cat /proc/net/rt_cache [root@callisto:~#] cat /proc/net/rt_cache_stat
### Linux ###
U (route is up)
H (target is a host)
G (use gateway)
R (reinstate route for dynamic routing)
D (dynamically installed by daemon or redirect)
M (modified from routing daemon or redirect)
A (installed by addrconf)
C (cache entry)
! (reject route)
### FreeBSD ###
1 RTF_PROTO1 Protocol specific routing flag #1
2 RTF_PROTO2 Protocol specific routing flag #2
3 RTF_PROTO3 Protocol specific routing flag #3
B RTF_BLACKHOLE Just discard pkts (during updates)
b RTF_BROADCAST The route represents a broadcast address
C RTF_CLONING Generate new routes on use
c RTF_PRCLONING Protocol-specified generate new routes on use
D RTF_DYNAMIC Created dynamically (by redirect)
G RTF_GATEWAY Destination requires forwarding by intermediary
H RTF_HOST Host entry (net otherwise)
L RTF_LLINFO Valid protocol to link address translation
M RTF_MODIFIED Modified dynamically (by redirect)
R RTF_REJECT Host or net unreachable
S RTF_STATIC Manually added
U RTF_UP Route usable
W RTF_WASCLONED Route was generated as a result of cloning
X RTF_XRESOLVE External daemon translates proto to link address