function socket(t,a,p, s1,s2) { s1 = a == "0.0.0.0" ? "*" : a; if (p == 0) s2 = "*"; else if ((p, t) in services) s2 = services[p, t]; else s2 = p; return (s1 "." s2); } function tt_type(f) { if (f in types) return types[f]; return (f ? f : "unknown"); } BEGIN { types[1] = "CLOSED"; types[2] = "LISTEN"; types[3] = "SYN_SENT"; types[4] = "SYN_RCVD"; types[5] = "ESTABLISHED"; types[6] = "FIN_WAIT_1"; types[7] = "FIN_WAIT_2"; types[8] = "CLOSE_WAIT"; types[9] = "LAST_ACK"; types[10] = "CLOSING"; types[11] = "TIME_WAIT"; services[7, "udp"] = "echo"; services[9, "udp"] = "discard"; services[11, "tcp"] = "systat"; services[13, "tcp"] = "daytime"; services[15, "tcp"] = "netstat"; services[20, "tcp"] = "ftp-data"; services[21, "tcp"] = "ftp"; services[23, "tcp"] = "telnet"; services[25, "tcp"] = "smtp"; services[37, "tcp"] = "time"; services[37, "udp"] = "time"; services[42, "udp"] = "name"; services[43, "tcp"] = "whois"; services[53, "udp"] = "domain"; services[53, "tcp"] = "domain"; services[101, "tcp"] = "hostnames"; services[102, "tcp"] = "tsap"; services[109, "tcp"] = "pop"; services[111, "udp"] = "sunrpc"; services[111, "tcp"] = "sunrpc"; services[69, "udp"] = "tftp"; services[77, "tcp"] = "rje"; services[79, "tcp"] = "finger"; services[87, "tcp"] = "link"; services[95, "tcp"] = "supdup"; services[105, "tcp"] = "csnet-ns"; services[117, "tcp"] = "uucp-path"; services[119, "tcp"] = "untp"; services[123, "tcp"] = "ntp"; services[161, "udp"] = "snmp"; services[162, "udp"] = "snmp-trap"; services[199, "tcp"] = "smux"; services[1524, "tcp"] = "ingreslock"; services[512, "tcp"] = "exec"; services[513, "tcp"] = "login"; services[514, "tcp"] = "shell"; services[515, "tcp"] = "printer"; services[530, "tcp"] = "courier"; services[512, "udp"] = "biff"; services[513, "udp"] = "who"; services[514, "udp"] = "syslog"; services[517, "udp"] = "talk"; services[520, "udp"] = "route"; services[550, "udp"] = "new-rwho"; services[560, "udp"] = "rmonitor"; services[561, "udp"] = "monitor"; printf "Active connections%s\n", aflag ? " (including servers)" : ""; printf "%-5s %-6s %-6s %-20s %-20s %s\n", "Proto", "Recv-Q", "Send-Q", "Local Address", "Foreign Address", "(state)"; hasunix = unixNetstat == 1; didone = 0; for (i in tcpConnState) { didone = 1; if (!aflag && tcpConnLocalAddress == "0.0.0.0") continue; printf "%-5s %6s %6s %-20s %-20s %s\n", "tcp", hasunix ? unixTcpConnRecvQ[i] : "", hasunix ? unixTcpConnSendQ[i] : "", socket("tcp",tcpConnLocalAddress,tcpConnLocalPort), socket("tcp",tcpConnRemAddress,tcpConnRemPort), tt_type(tcpConnState); } if (!didone && DIAGNOSTIC) printf "tcpConnTable: %s\n", DIAGNOSTIC; didone = 0; for (i in udpLocalAddress) { didone = 1; if (!aflag && udpLocalAddress == "0.0.0.0") continue; printf "%-5s %6s %6s %-20s %-20s %s\n", "udp", hasunix ? unixUdpRecvQ[i] : "", hasunix ? unixUdpSendQ[i] : "", socket("udp",udpLocalAddress,udpLocalPort), hasunix ? socket("udp",unixUdpRemAddress[i],unixUdpRemPort[i]) : "", ""; } if (!didone && DIAGNOSTIC) printf "udpTable: %s\n", DIAGNOSTIC; }