|
|
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.