diff options
author | Jennifer Averett <jennifer.averett@oarcorp.com> | 2012-10-23 14:13:08 -0500 |
---|---|---|
committer | Jennifer Averett <jennifer.averett@oarcorp.com> | 2012-10-23 14:13:08 -0500 |
commit | 2df6b3148a54eafa5068bf8f5df042be5ac90ab9 (patch) | |
tree | d04907fad26f15acc2731a71e7f02095524ae18f | |
parent | ifconfig.c: Correct for getopt_r() (diff) | |
download | rtems-libbsd-2df6b3148a54eafa5068bf8f5df042be5ac90ab9.tar.bz2 |
netstat: Added exit funtionality.
-rw-r--r-- | freebsd-userspace/commands/usr.bin/netstat/main.c | 376 |
1 files changed, 375 insertions, 1 deletions
diff --git a/freebsd-userspace/commands/usr.bin/netstat/main.c b/freebsd-userspace/commands/usr.bin/netstat/main.c index 4ea12a69..a6411dfc 100644 --- a/freebsd-userspace/commands/usr.bin/netstat/main.c +++ b/freebsd-userspace/commands/usr.bin/netstat/main.c @@ -365,6 +365,380 @@ int unit; /* unit number for above */ int af; /* address family */ int live; /* true if we are examining a live system */ + +#ifdef __rtems__ +static int main_netstat(int argc, char *argv[]); +static int rtems_shell_main_netstat(int argc, char *argv[]) +{ + int i; + rtems_shell_globals_t netstat_globals; + rtems_shell_globals = &netstat_globals; + memset (rtems_shell_globals, 0, sizeof (netstat_globals)); + + i = 0; + protox[i].pr_index = N_TCBINFO; + protox[i].pr_sindex = N_TCPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = protopr; + protox[i].pr_stats = tcp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "tcp"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = IPPROTO_TCP; + i++; + protox[i].pr_index = N_UDBINFO; + protox[i].pr_sindex = N_UDPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = protopr; + protox[i].pr_stats = udp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "udp"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = IPPROTO_UDP; + i++; +#ifdef SCTP + protox[i].pr_index = -1; + protox[i].pr_sindex = N_SCTPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = sctp_protopr; + protox[i].pr_stats = sctp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "sctp"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = IPPROTO_SCTP; + i++; +#endif + protox[i].pr_index = N_DIVCBINFO; + protox[i].pr_sindex = -1; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = protopr; + protox[i].pr_stats = NULL; + protox[i].pr_istats = NULL; + protox[i].pr_name = "divert"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = IPPROTO_DIVERT; + i++; + protox[i].pr_index = N_RIPCBINFO; + protox[i].pr_sindex = N_IPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = protopr; + protox[i].pr_stats = ip_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "ip"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = IPPROTO_RAW; + i++; + protox[i].pr_index = N_RIPCBINFO; + protox[i].pr_sindex = N_ICMPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = protopr; + protox[i].pr_stats = icmp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "icmp"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = IPPROTO_ICMP; + i++; + protox[i].pr_index = N_RIPCBINFO; + protox[i].pr_sindex = N_IGMPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = protopr; + protox[i].pr_stats = igmp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "igmp"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = IPPROTO_IGMP; + i++; +#ifdef IPSEC + protox[i].pr_index = -1; + protox[i].pr_sindex = N_IPSECSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = NULL; + protox[i].pr_stats = ipsec_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "ipsec"; + protox[i].pr_usesysctl = 0; + protox[i].pr_protocol = 0; + i++; + protox[i].pr_index = -1; + protox[i].pr_sindex = N_AHSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = NULL; + protox[i].pr_stats = ah_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "ah"; + protox[i].pr_usesysctl = 0; + protox[i].pr_protocol = 0; + i++; + protox[i].pr_index = -1; + protox[i].pr_sindex = N_ESPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = NULL; + protox[i].pr_stats = esp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "esp"; + protox[i].pr_usesysctl = 0; + protox[i].pr_protocol = 0; + i++; + protox[i].pr_index = -1; + protox[i].pr_sindex = N_IPCOMPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = NULL; + protox[i].pr_stats = ipcomp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "ipcomp"; + protox[i].pr_usesysctl = 0; + protox[i].pr_protocol = 0; + i++; +#endif + protox[i].pr_index = N_RIPCBINFO; + protox[i].pr_sindex = N_PIMSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = protopr; + protox[i].pr_stats = pim_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "pim"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = IPPROTO_PIM; + i++; + protox[i].pr_index = -1; + protox[i].pr_sindex = N_CARPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = NULL; + protox[i].pr_stats = carp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "carp"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = 0; + i++; + protox[i].pr_index = -1; + protox[i].pr_sindex = N_PFSYNCSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = NULL; + protox[i].pr_stats = pfsync_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "pfsync"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = 0; + i++; + protox[i].pr_index = -1; + protox[i].pr_sindex = N_ARPSTAT; + protox[i].pr_wanted = 1; + protox[i].pr_cblocks = NULL; + protox[i].pr_stats = arp_stats; + protox[i].pr_istats = NULL; + protox[i].pr_name = "arp"; + protox[i].pr_usesysctl = 1; + protox[i].pr_protocol = 0; + i++; + protox[i].pr_index = -1; + protox[i].pr_sindex = -1; + protox[i].pr_wanted = 0; + protox[i].pr_cblocks = NULL; + protox[i].pr_stats = NULL; + protox[i].pr_istats = NULL; + protox[i].pr_name = NULL; + protox[i].pr_usesysctl = 0; + protox[i].pr_protocol = 0; + +#ifdef INET6 + i=0; + ip6protox[i].pr_index = N_TCBINFO; + ip6protox[i].pr_sindex = N_TCPSTAT; + ip6protox[i].pr_wanted = 1; + ip6protox[i].pr_cblocks = protopr; + ip6protox[i].pr_stats = tcp_stats; + ip6protox[i].pr_istats = NULL; + ip6protox[i].pr_name = "tcp"; + ip6protox[i].pr_usesysctl = 1; + ip6protox[i].pr_protocol = ; + i++; + ip6protox[i].pr_index = N_UDBINFO; + ip6protox[i].pr_sindex = N_UDPSTAT; + ip6protox[i].pr_wanted = 1; + ip6protox[i].pr_cblocks = protopr; + ip6protox[i].pr_stats = udp_stats; + ip6protox[i].pr_istats = NULL; + ip6protox[i].pr_name = "udp"; + ip6protox[i].pr_usesysctl = 1; + ip6protox[i].pr_protocol = IPPROTO_UDP; + i++; + ip6protox[i].pr_index = N_RIPCBINFO; + ip6protox[i].pr_sindex = N_IP6STAT; + ip6protox[i].pr_wanted = 1; + ip6protox[i].pr_cblocks = protopr; + ip6protox[i].pr_stats = ip6_stats; + ip6protox[i].pr_istats = ip6_ifstats; + ip6protox[i].pr_name = "ip6"; + ip6protox[i].pr_usesysctl = 1; + ip6protox[i].pr_protocol = IPPROTO_RAW; + i++; + ip6protox[i].pr_index = N_RIPCBINFO; + ip6protox[i].pr_sindex = N_ICMP6STAT; + ip6protox[i].pr_wanted = 1; + ip6protox[i].pr_cblocks = protopr; + ip6protox[i].pr_stats = icmp6_stats; + ip6protox[i].pr_istats = icmp6_ifstats; + ip6protox[i].pr_name = "icmp6"; + ip6protox[i].pr_usesysctl = 1; + ip6protox[i].pr_protocol = IPPROTO_ICMPV6; + i++; +#ifdef IPSEC + ip6protox[i].pr_index = -1; + ip6protox[i].pr_sindex = N_IPSEC6STAT; + ip6protox[i].pr_wanted = 1; + ip6protox[i].pr_cblocks = NULL; + ip6protox[i].pr_stats = ipsec_stats; + ip6protox[i].pr_istats = NULL; + ip6protox[i].pr_name = "ipsec6"; + ip6protox[i].pr_usesysctl = 0; + ip6protox[i].pr_protocol = 0; + i++; +#endif +#ifdef notyet + ip6protox[i].pr_index = -1; + ip6protox[i].pr_sindex = N_PIM6STAT; + ip6protox[i].pr_wanted = 1; + ip6protox[i].pr_cblocks = NULL; + ip6protox[i].pr_stats = pim6_stats; + ip6protox[i].pr_istats = NULL; + ip6protox[i].pr_name = "pim6"; + ip6protox[i].pr_usesysctl = 1; + ip6protox[i].pr_protocol = 0; + i++; +#endif + ip6protox[i].pr_index = -1; + ip6protox[i].pr_sindex = N_RIP6STAT; + ip6protox[i].pr_wanted = 1; + ip6protox[i].pr_cblocks = NULL; + ip6protox[i].pr_stats = rip6_stats; + ip6protox[i].pr_istats = NULL; + ip6protox[i].pr_name = "rip6"; + ip6protox[i].pr_usesysctl = 1; + ip6protox[i].pr_protocol = 0; + i++; + ip6protox[i].pr_index = -1; + ip6protox[i].pr_sindex = -1; + ip6protox[i].pr_wanted = 0; + ip6protox[i].pr_cblocks = NULL; + ip6protox[i].pr_stats = NULL; + ip6protox[i].pr_istats = NULL; + ip6protox[i].pr_name = NULL; + ip6protox[i].pr_usesysctl = 0; + ip6protox[i].pr_protocol = 0; + i++; +#endif /*INET6*/ + +#ifdef IPSEC + i=0; + pfkeyprotox[i].pr_index = -1; + pfkeyprotox[i].pr_sindex = N_PFKEYSTAT; + pfkeyprotox[i].pr_wanted = 1; + pfkeyprotox[i].pr_cblocks = NULL; + pfkeyprotox[i].pr_stats = pfkey_stats; + pfkeyprotox[i].pr_istats = NULL; + pfkeyprotox[i].pr_name = "pfkey"; + pfkeyprotox[i].pr_usesysctl = 0; + pfkeyprotox[i].pr_protocol = 0; + i++; + pfkeyprotox[i].pr_index = -1; + pfkeyprotox[i].pr_sindex = -1; + pfkeyprotox[i].pr_wanted = 0; + pfkeyprotox[i].pr_cblocks = NULL; + pfkeyprotox[i].pr_stats = NULL; + pfkeyprotox[i].pr_istats = NULL; + pfkeyprotox[i].pr_name = NULL; + pfkeyprotox[i].pr_usesysctl = 0; + pfkeyprotox[i].pr_protocol = 0; +#endif + +#ifdef NETGRAPH + netgraphprotox[i].pr_index = N_NGSOCKS; + netgraphprotox[i].pr_sindex = -1; + netgraphprotox[i].pr_wanted = 1; + netgraphprotox[i].pr_cblocks = netgraphprotopr; + netgraphprotox[i].pr_stats = NULL; + netgraphprotox[i].pr_istats = NULL; + netgraphprotox[i].pr_name = "ctrl"; + netgraphprotox[i].pr_usesysctl = 0; + netgraphprotox[i].pr_protocol = 0; + i++; + netgraphprotox[i].pr_index = N_NGSOCKS; + netgraphprotox[i].pr_sindex = -1; + netgraphprotox[i].pr_wanted = 1; + netgraphprotox[i].pr_cblocks = netgraphprotopr; + netgraphprotox[i].pr_stats = NULL; + netgraphprotox[i].pr_istats = NULL; + netgraphprotox[i].pr_name = "data"; + netgraphprotox[i].pr_usesysctl = 0; + netgraphprotox[i].pr_protocol = 0; + i++; + netgraphprotox[i].pr_index = -1; + netgraphprotox[i].pr_sindex = -1; + netgraphprotox[i].pr_wanted = 0; + netgraphprotox[i].pr_cblocks = NULL; + netgraphprotox[i].pr_stats = NULL; + netgraphprotox[i].pr_istats = NULL; + netgraphprotox[i].pr_name = NULL; + netgraphprotox[i].pr_usesysctl = 0; + netgraphprotox[i].pr_protocol = 0; +#endif +#ifdef IPX + i=0; + ipxprotox[i].pr_index = N_IPX; + ipxprotox[i].pr_sindex = N_IPXSTAT; + ipxprotox[i].pr_wanted = 1; + ipxprotox[i].pr_cblocks = ipxprotopr; + ipxprotox[i].pr_stats = ipx_stats; + ipxprotox[i].pr_istats = NULL; + ipxprotox[i].pr_name = "ipx"; + ipxprotox[i].pr_usesysctl = 0; + ipxprotox[i].pr_protocol = 0; + i++; + ipxprotox[i].pr_index = N_IPX; + ipxprotox[i].pr_sindex = N_SPXSTAT; + ipxprotox[i].pr_wanted = 1; + ipxprotox[i].pr_cblocks = ipxprotopr; + ipxprotox[i].pr_stats = spx_stats; + ipxprotox[i].pr_istats = NULL; + ipxprotox[i].pr_name = "spx"; + ipxprotox[i].pr_usesysctl = 0; + ipxprotox[i].pr_protocol = 0; + i++; + ipxprotox[i].pr_index = -1; + ipxprotox[i].pr_sindex = -1; + ipxprotox[i].pr_wanted = 0; + ipxprotox[i].pr_cblocks = NULL; + ipxprotox[i].pr_stats = NULL; + ipxprotox[i].pr_istats = NULL; + ipxprotox[i].pr_name = 0; + ipxprotox[i].pr_usesysctl = 0; + ipxprotox[i].pr_protocol = 0; + i++; +#endif + + i=0; + protoprotox[i] = protox; + i++; +#ifdef INET6 + protoprotox[i] = ip6protox, + i++; +#endif +#ifdef IPSEC + protoprotox[i] = pfkeyprotox, + i++; +#endif +#ifdef IPX + protoprotox[i] = ipxprotox, +#endif + noutputs = 0; + + netstat_globals.exit_code = 1; + if (setjmp (netstat_globals.exit_jmp) == 0) + return main_netstat (argc, argv); + return netstat_globals.exit_code; +} +#endif + int #ifdef __rtems__ main_netstat(int argc, char *argv[]) @@ -843,7 +1217,7 @@ usage(void) "netstat", /* name */ "netstat [args]", /* usage */ "net", /* topic */ - main_netstat, /* command */ + rtems_shell_main_netstat, /* command */ NULL, /* alias */ NULL /* next */ }; |