|
|
1.1 ! root 1: function ip_stats() { ! 2: didone = 0; ! 3: for (i in ipForwarding) { ! 4: didone = 1; ! 5: ! 6: printf "ip (acting as %s):\n", ! 7: ipForwarding == 1 ? "gateway" : "host"; ! 8: printf "%9s packets received\n", ipInReceives; ! 9: printf "%9s packets with header errors\n", ipInHdrErrors; ! 10: printf "%9s packets discarded due to congestion\n", ! 11: ipInDiscards; ! 12: printf "%9s datagrams for unknown ULP\n", ipInUnknownProtos; ! 13: printf "%9s datagrams delivered to ULPs\n", ipInDelivers; ! 14: printf "\n"; ! 15: printf "%9s of %s datagrams reassembled\n", ! 16: ipReasmOKs, ipReasmReqds; ! 17: printf "%9s of %s+%s datagrams fragmented\n", ! 18: ipFragOKs, ipFragCreates, ipFragFails; ! 19: printf "\n"; ! 20: printf "%9s datagrams forwarded\n", ipForwDatagrams; ! 21: printf "%9s datagrams sent by ULPs\n", ipOutRequests; ! 22: printf "%9s packets discarded due to congestion\n", ! 23: ipOutDiscards; ! 24: printf "%9s packets discarded due to no route\n", ! 25: ipOutNoRoutes; ! 26: printf "\n"; ! 27: } ! 28: if (!didone && DIAGNOSTIC) ! 29: printf "ip statistics: %s\n\n", DIAGNOSTIC; ! 30: } ! 31: ! 32: function icmp_stats() { ! 33: didone = 0; ! 34: for (i in icmpInMsgs) { ! 35: didone = 1; ! 36: ! 37: printf "icmp:\n"; ! 38: printf "%9s datagrams received\n", icmpInMsgs; ! 39: printf "%9s datagrams received in error\n", icmpInErrors; ! 40: printf "\tInput histogram:\n" ! 41: if (i = icmpInDestUnreachs) ! 42: printf "\t\tdestination unreachable: %d\n", i; ! 43: if (i = icmpInTimeExcds) ! 44: printf "\t\ttime exceeded: %d\n", i; ! 45: if (i = icmpInParmProbs) ! 46: printf "\t\tparameter problem: %d\n", i; ! 47: if (i = icmpInSrcQuenchs) ! 48: printf "\t\tsource quench: %d\n", i; ! 49: if (i = icmpInRedirects) ! 50: printf "\t\tredirect: %d\n", i; ! 51: if (i = icmpInEchos) ! 52: printf "\t\techo request: %d\n", i; ! 53: if (i = icmpInEchoReps) ! 54: printf "\t\techo reply: %d\n", i; ! 55: if (i = icmpInTimestamps) ! 56: printf "\t\ttimestamp request: %d\n", i; ! 57: if (i = icmpInTimestampReps) ! 58: printf "\t\ttimestamp reply: %d\n", i; ! 59: if (i = icmpInAddrMasks) ! 60: printf "\t\taddress mask request: %d\n", i; ! 61: if (i = icmpInAddrMaskReps) ! 62: printf "\t\taddress mask reply: %d\n", i; ! 63: printf "\n"; ! 64: printf "%9s datagrams sent\n", icmpOutMsgs; ! 65: printf "%9s datagrams discarded due to error\n", icmpOutErrors; ! 66: printf "\tOutput histogram:\n" ! 67: if (i = icmpOutDestUnreachs) ! 68: printf "\t\tdestination unreachable: %d\n", i; ! 69: if (i = icmpOutTimeExcds) ! 70: printf "\t\ttime exceeded: %d\n", i; ! 71: if (i = icmpOutParmProbs) ! 72: printf "\t\tparameter problem: %d\n", i; ! 73: if (i = icmpOutSrcQuenchs) ! 74: printf "\t\tsource quench: %d\n", i; ! 75: if (i = icmpOutRedirects) ! 76: printf "\t\tredirect: %d\n", i; ! 77: if (i = icmpOutEchos) ! 78: printf "\t\techo request: %d\n", i; ! 79: if (i = icmpOutEchoReps) ! 80: printf "\t\techo reply: %d\n", i; ! 81: if (i = icmpOutTimestamps) ! 82: printf "\t\ttimestamp request: %d\n", i; ! 83: if (i = icmpOutTimestampReps) ! 84: printf "\t\ttimestamp reply: %d\n", i; ! 85: if (i = icmpOutAddrMasks) ! 86: printf "\t\taddress mask request: %d\n", i; ! 87: if (i = icmpOutAddrMaskReps) ! 88: printf "\t\taddress mask reply: %d\n", i; ! 89: printf "\n"; ! 90: } ! 91: if (!didone && DIAGNOSTIC) ! 92: printf "icmp statistics: %s\n\n", DIAGNOSTIC; ! 93: } ! 94: ! 95: function rtoa(r) { ! 96: if (r in to) ! 97: return to[r]; ! 98: ! 99: return (r ? r : "unknown"); ! 100: } ! 101: ! 102: function tcp_stats() { ! 103: didone = 0; ! 104: for (i in tcpRtoAlgorithm) { ! 105: didone = 1; ! 106: ! 107: to[1] = "other"; to[2] = "constant" ; to[3] = "rsre"; to[4] = "vanj"; ! 108: printf "tcp (using %s algorithm):\n", rtoa(tcpRtoAlgorithm); ! 109: printf "%9s segments received\n", tcpInSegs; ! 110: printf "%9s segments with header errors\n", tcpInErrs; ! 111: printf "\n"; ! 112: printf "%9s connection attempts failed\n", tcpAttemptFails; ! 113: printf "%9s RSTs received on connections\n", tcpEstabResets; ! 114: printf "\n"; ! 115: printf "%9s segments sent\n", tcpOutSegs; ! 116: printf "%9s segments retransmitted\n", tcpRetransSegs; ! 117: printf "%9s RSTs sent\n", tcpOutRsts; ! 118: printf "\n"; ! 119: } ! 120: if (!didone && DIAGNOSTIC) ! 121: printf "tcp statistics: %s\n\n", DIAGNOSTIC; ! 122: } ! 123: ! 124: function udp_stats() { ! 125: didone = 0; ! 126: for (i in udpInDatagrams) { ! 127: didone = 1; ! 128: ! 129: printf "udp:\n"; ! 130: printf "%9s datagrams received\n", udpInDatagrams; ! 131: printf "%9s datagrams for unknown port\n", udpNoPorts; ! 132: printf "%9s datagrams with header errors\n", udpInErrors; ! 133: printf "\n"; ! 134: printf "%9s datagrams sent\n", udpOutDatagrams; ! 135: printf "\n"; ! 136: } ! 137: if (!didone && DIAGNOSTIC) ! 138: printf "udp statistics: %s\n\n", DIAGNOSTIC; ! 139: } ! 140: ! 141: function clnp_stats() { ! 142: for (i in clnpForwarding) { ! 143: didone = 1; ! 144: ! 145: printf "clnp (acting as %s-system):\n", ! 146: clnpForwarding == 1 ? "intermediate" : "end"; ! 147: printf "%9s packets received\n", clnpInReceives; ! 148: printf "%9s packets with header errors\n", clnpInHdrErrors; ! 149: printf "%9s packets discarded due to congestion\n", clnpInDiscards; ! 150: printf "%9s datagrams for unknown ULP\n", clnpInUnknownULPs; ! 151: printf "%9s datagrams delivered to ULPs\n", clnpInDelivers; ! 152: printf "\n"; ! 153: printf "%9s of %s datagrams reassembled\n", ! 154: clnppReasmOKs, clnpReasmReqds; ! 155: printf "%9s of %s+%s datagrams segmented\n", ! 156: clnpSegOKs, clnpSegCreates, clnpSegFails; ! 157: printf "\n"; ! 158: printf "%9s datagrams forwarded\n", clnpForwPDUs; ! 159: printf "%9s datagrams sent by ULPs\n", clnpOutRequests; ! 160: printf "%9s packets discarded due to congestion\n", ! 161: clnpOutDiscards; ! 162: printf "%9s packets discarded due to no route\n", clnpOutNoRoutes; ! 163: printf "\n"; ! 164: } ! 165: if (!didone && DIAGNOSTIC) ! 166: printf "clnp statistics: %s\n\n", DIAGNOSTIC; ! 167: } ! 168: ! 169: function error_stats() { ! 170: didone = 0; ! 171: for (i in clnpInErrors) { ! 172: didone = 1; ! 173: ! 174: printf "clnp error:\n"; ! 175: printf "%9s error PDUs received\n", clnpInErrors; ! 176: printf "\tInput histogram:\n"; ! 177: if (i = clnpInErrUnspecs) ! 178: printf "\t\tclnpInErrUnspecs: %d\n", i; ! 179: if (i = clnpInErrProcs) ! 180: printf "\t\tclnpInErrProcs: %d\n", i; ! 181: if (i = clnpInErrCksums) ! 182: printf "\t\tclnpInErrCksums: %d\n", i; ! 183: if (i = clnpInErrCongests) ! 184: printf "\t\tclnpInErrCongests: %d\n", i; ! 185: if (i = clnpInErrHdrs) ! 186: printf "\t\tclnpInErrHdrs: %d\n", i; ! 187: if (i = clnpInErrSegs) ! 188: printf "\t\tclnpInErrSegs: %d\n", i; ! 189: if (i = clnpInErrIncomps) ! 190: printf "\t\tclnpInErrIncomps: %d\n", i; ! 191: if (i = clnpInErrDups) ! 192: printf "\t\tclnpInErrDups: %d\n", i; ! 193: if (i = clnpInErrUnreachDsts) ! 194: printf "\t\tclnpInErrUnreachDsts: %d\n", i; ! 195: if (i = clnpInErrUnknownDsts) ! 196: printf "\t\tclnpInErrUnknownDsts: %d\n", i; ! 197: if (i = clnpInErrSRUnspecs) ! 198: printf "\t\tclnpInErrSRUnspecs: %d\n", i; ! 199: if (i = clnpInErrSRSyntaxes) ! 200: printf "\t\tclnpInErrSRSyntaxes: %d\n", i; ! 201: if (i = clnpInErrSRUnkAddrs) ! 202: printf "\t\tclnpInErrSRUnkAddrs: %d\n", i; ! 203: if (i = clnpInErrSRBadPaths) ! 204: printf "\t\tclnpInErrSRBadPaths: %d\n", i; ! 205: if (i = clnpInErrHops) ! 206: printf "\t\tclnpInErrHops: %d\n", i; ! 207: if (i = clnpInErrHopReassms) ! 208: printf "\t\tclnpInErrHopReassms: %d\n", i; ! 209: if (i = clnpInErrUnsOptions) ! 210: printf "\t\tclnpInErrUnsOptions: %d\n", i; ! 211: if (i = clnpInErrUnsVersions) ! 212: printf "\t\tclnpInErrUnsVersions: %d\n", i; ! 213: if (i = clnpInErrUnsSecurities) ! 214: printf "\t\tclnpInErrUnsSecurities: %d\n", i; ! 215: if (i = clnpInErrUnsSRs) ! 216: printf "\t\tclnpInErrUnsSRs: %d\n", i; ! 217: if (i = clnpInErrUnsRRs) ! 218: printf "\t\tclnpInErrUnsRRs: %d\n", i; ! 219: if (i = clnpInErrInterferences) ! 220: printf "\t\tclnpInErrInterferences: %d\n", i; ! 221: printf "\n"; ! 222: printf "%9s error PDUs sent\n", clnpOutErrors; ! 223: printf "\tOutput histogram:\n"; ! 224: if (i = clnpOutErrUnspecs) ! 225: printf "\t\tclnpOutErrUnspecs: %d\n", i; ! 226: if (i = clnpOutErrProcs) ! 227: printf "\t\tclnpOutErrProcs: %d\n", i; ! 228: if (i = clnpOutErrCksums) ! 229: printf "\t\tclnpOutErrCksums: %d\n", i; ! 230: if (i = clnpOutErrCongests) ! 231: printf "\t\tclnpOutErrCongests: %d\n", i; ! 232: if (i = clnpOutErrHdrs) ! 233: printf "\t\tclnpOutErrHdrs: %d\n", i; ! 234: if (i = clnpOutErrSegs) ! 235: printf "\t\tclnpOutErrSegs: %d\n", i; ! 236: if (i = clnpOutErrIncomps) ! 237: printf "\t\tclnpOutErrIncomps: %d\n", i; ! 238: if (i = clnpOutErrDups) ! 239: printf "\t\tclnpOutErrDups: %d\n", i; ! 240: if (i = clnpOutErrUnreachDsts) ! 241: printf "\t\tclnpOutErrUnreachDsts: %d\n", i; ! 242: if (i = clnpOutErrUnknownDsts) ! 243: printf "\t\tclnpOutErrUnknownDsts: %d\n", i; ! 244: if (i = clnpOutErrSRUnspecs) ! 245: printf "\t\tclnpOutErrSRUnspecs: %d\n", i; ! 246: if (i = clnpOutErrSRSyntaxes) ! 247: printf "\t\tclnpOutErrSRSyntaxes: %d\n", i; ! 248: if (i = clnpOutErrSRUnkAddrs) ! 249: printf "\t\tclnpOutErrSRUnkAddrs: %d\n", i; ! 250: if (i = clnpOutErrSRBadPaths) ! 251: printf "\t\tclnpOutErrSRBadPaths: %d\n", i; ! 252: if (i = clnpOutErrHops) ! 253: printf "\t\tclnpOutErrHops: %d\n", i; ! 254: if (i = clnpOutErrHopReassms) ! 255: printf "\t\tclnpOutErrHopReassms: %d\n", i; ! 256: if (i = clnpOutErrUnsOptions) ! 257: printf "\t\tclnpOutErrUnsOptions: %d\n", i; ! 258: if (i = clnpOutErrUnsVersions) ! 259: printf "\t\tclnpOutErrUnsVersions: %d\n", i; ! 260: if (i = clnpOutErrUnsSecurities) ! 261: printf "\t\tclnpOutErrUnsSecurities: %d\n", i; ! 262: if (i = clnpOutErrUnsSRs) ! 263: printf "\t\tclnpOutErrUnsSRs: %d\n", i; ! 264: if (i = clnpOutErrUnsRRs) ! 265: printf "\t\tclnpOutErrUnsRRs: %d\n", i; ! 266: if (i = clnpOutErrInterferences) ! 267: printf "\t\tclnpOutErrInterferences: %d\n", i; ! 268: printf "\n"; ! 269: } ! 270: if (!didone && DIAGNOSTIC) ! 271: printf "clnp error statistics: %s\n\n", DIAGNOSTIC; ! 272: } ! 273: ! 274: function esis_stats() { ! 275: didone = 0; ! 276: for (i in esisESHins) { ! 277: didone = 1; ! 278: ! 279: printf "es-is:\n"; ! 280: printf "%9s ESHs received\n", esisESHins; ! 281: printf "%9s ISHs received\n", esisISHins; ! 282: printf "%9s RDUs received\n", esisRDUins; ! 283: printf "\n"; ! 284: printf "%9s ESHs sent\n", esisESHouts; ! 285: printf "%9s ISHs sent\n", esisISHouts; ! 286: printf "%9s RDUs sent\n", esisRDUouts; ! 287: printf "\n"; ! 288: } ! 289: if (!didone && DIAGNOSTIC) ! 290: printf "es-is statistics: %s\n\n", DIAGNOSTIC; ! 291: } ! 292: ! 293: BEGIN { ! 294: ip_stats(); ! 295: icmp_stats(); ! 296: tcp_stats(); ! 297: udp_stats(); ! 298: if (!oflag) ! 299: exit(0); ! 300: ! 301: clnp_stats(); ! 302: error_stats(); ! 303: esis_stats(); ! 304: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.