6 Print routing tables as 'netstat -anr' does.
18 set $RTF_GATEWAY = 0x2
20 set $RTF_STATIC = 0x800
23 # XXX: alas, we can't script "show endian"
25 if (machine[0] == 'a' && machine[1] == 'm' && machine[2] == 'd') || \
26 (machine[0] == 'i' && machine[1] == '3' && machine[2] == '8')
34 printf "%u.%u.%u.%u", \
35 $arg0 & 0xff, ($arg0 >> 8) & 0xff, \
36 ($arg0 >> 16) & 0xff, ($arg0 >> 24) & 0xff
38 printf "%u.%u.%u.%u", \
39 ($arg0 >> 24) & 0xff, ($arg0 >> 16) & 0xff, \
40 ($arg0 >> 8) & 0xff, $arg0 & 0xff
48 if ($arg0 & (1 << $b))
60 if ($arg0 & $RTF_GATEWAY)
63 if ($arg0 & $RTF_HOST)
66 if ($arg0 & $RTF_STATIC)
72 set $sa = (struct sockaddr *)$arg0
74 if ($sa->sa_family == $AF_INET)
75 set $sin = (struct sockaddr_in *)$arg0
76 set $mask = (struct sockaddr_in *)$arg1
77 if ($flags & $RTF_HOST)
78 routename $sin->sin_addr.s_addr
80 routename $sin->sin_addr.s_addr
82 domask $mask->sin_addr.s_addr
88 if ($sa->sa_family == $AF_LINK)
89 set $sdl = (struct sockaddr_dl *)$arg0
90 if ($sdl->sdl_nlen == 0 && $sdl->sdl_alen == 0 && \
92 printf "link#%d", $sdl->sdl_index
98 set $rte = (struct rtentry *)$arg0
99 set $rn = (struct radix_node *)$arg0
100 set $sa = ((struct sockaddr **)($rn->rn_u.rn_leaf.rn_Key))
101 set $sam = ((struct sockaddr **)($rn->rn_u.rn_leaf.rn_Mask))
102 set $gw = $rte->rt_gateway
104 p_sockaddr $sa $sam $rte->rt_flags
106 p_sockaddr $gw 0 $RTF_HOST
108 p_flags $rte->rt_flags
110 if ($rte->rt_ifp != 0)
111 printf "%s", $rte->rt_ifp->if_xname
117 set $rn_$arg0 = (struct radix_node *)$arg1
118 set $left_$arg0 = $arg0 + 1
119 set $right_$arg0 = $arg0 + 2
120 set $duped_$arg0 = $arg0 + 3
122 if ($rn_$arg0->rn_bit < 0 || ($rn_$arg0->rn_flags & $RNF_ACTIVE) == 0)
127 if (($rn_$arg0->rn_flags & ($RNF_ACTIVE | $RNF_ROOT)) == \
131 if (($rn_$arg0->rn_flags & $RNF_ACTIVE) != 0 && \
132 $rn_$arg0->rn_u.rn_leaf.rn_Dupedkey != 0)
137 p_rtree $duped_$arg0 $rn_$arg0->rn_u.rn_leaf.rn_Dupedkey
140 if ($rn_$arg0->rn_u.rn_node.rn_R != 0)
145 p_rtree $right_$arg0 $rn_$arg0->rn_u.rn_node.rn_R
147 if ($rn_$arg0->rn_u.rn_node.rn_L != 0)
152 p_rtree $left_$arg0 $rn_$arg0->rn_u.rn_node.rn_L
158 printf "Routing tables\n\nInternet:\n"
160 set $rt = (struct radix_node_head **)rt_tables + $af
161 printf "Destination\tGateway\tFlags\tNetif\n"
162 p_rtree 0 $rt->rnh_treetop