|
|
1.1 root 1: function rt_type(f) {
2: if (f in types)
3: return types[f];
4:
5: return (f ? f : "unknown");
6: }
7:
8: function rt_flags(f) {
9: s = "";
10:
11: if (bit_and(f, 1))
12: s = (s "U");
13: if (bit_and(f, 2))
14: s = (s "G");
15: if (bit_and(f, 4))
16: s = (s "H");
17: if (bit_and(f, 8))
18: s = (s "R");
19: if (bit_and(f, 16))
20: s = (s "D");
21: if (bit_and(f, 32))
22: s = (s "M");
23: if (bit_and(f, 64))
24: s = (s "Do");
25: if (bit_and(f, 128))
26: s = (s "C");
27: if (bit_and(f, 256))
28: s = (s "X");
29:
30: return s;
31: }
32:
33: function do_stats() {
34: if (!hasunix) {
35: printf "routing statistics not implemented\n";
36: exit(1);
37: }
38:
39: didone = 0;
40: for (i in unixRouteBadRedirects) {
41: didone = 1;
42:
43: printf "routing:\n";
44: printf "%9s bad routing redirects\n", unixRouteBadRedirects;
45: printf "%9s dynamic created routes\n", unixRouteCreatedByRedirects;
46: printf "%9s new gateways due to redirects\n", unixRouteModifiedByRedirects;
47: printf "%9s destinations found unreachable\n", unixRouteLookupFails;
48: printf "%9s uses of a wildcard route\n", unixRouteWildcardUses;
49: }
50: if (!didone && DIAGNOSTIC)
51: printf "routing statistics: %s\n\n", DIAGNOSTIC;
52: }
53:
54: BEGIN {
55: hasunix = unixNetstat == 1;
56:
57: if (sflag) {
58: do_stats();
59: exit(0);
60: }
61:
62: types[1] = "Other";
63: types[2] = "Invalid";
64: types[3] = "Direct";
65: types[4] = "Remote";
66:
67: printf "Routing tables\n";
68: printf "%-15s %-15s %-8s %-6s %-10s %s\n",
69: "Destination",
70: "Gateway",
71: hasunix ? "Flags" : "Type",
72: "Refcnt",
73: "Use",
74: "Interface";
75: didone = 0;
76: for (i in ipRouteDest) {
77: didone = 1;
78:
79: printf "%-15s %-15s %-8s %-6s %-10s %s (#%d)\n",
80: ipRouteDest == "0.0.0.0" ? "default" : ipRouteDest,
81: ipRouteNextHop,
82: hasunix ? rt_flags(unixIpRouteFlags[i]) \
83: : rt_type(ipRouteType),
84: hasunix ? unixIpRouteRefCnt[i] : "",
85: hasunix ? unixIpRouteUses[i] : "",
86: ifDescr[ipRouteIfIndex],
87: ipRouteIfIndex;
88: }
89: if (!didone && DIAGNOSTIC)
90: printf "ipRoutingTable: %s\n", DIAGNOSTIC;
91:
92: if (!oflag)
93: exit(0);
94:
95: didone = 0;
96: for (i in clnpRouteDest) {
97: didone = 1;
98:
99: printf "NS+%-28s %-8s %-6s %-10s %s (#%d)\n",
100: clnpRouteDest == "0" ? "default" : clnpRouteDest,
101: hasunix ? rt_flags(unixclnpRouteFlags[i]) \
102: : rt_type(clnpRouteType),
103: hasunix ? unixclnpRouteRefCnt[i] : "",
104: hasunix ? unixclnpRouteUses[i] : "",
105: ifDescr[clnpRouteIfIndex],
106: clnpRouteIfIndex;
107: printf " %-15s NS+%s\n",
108: "", clnpRouteNextHop;
109: }
110: if (!didone && DIAGNOSTIC)
111: printf "clnpRoutingTable: %s\n", DIAGNOSTIC;
112: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.