]>
Commit | Line | Data |
---|---|---|
236898d6 MT |
1 | --- net-tools-1.60/netstat.c.interface 2003-08-25 17:06:30.000000000 +0200 |
2 | +++ net-tools-1.60/netstat.c 2003-08-25 17:08:41.000000000 +0200 | |
3 | @@ -129,6 +129,7 @@ | |
4 | #define E_IOCTL -3 | |
5 | ||
6 | int flag_int = 0; | |
7 | +char *flag_int_name = NULL; | |
8 | int flag_rou = 0; | |
9 | int flag_mas = 0; | |
10 | int flag_sta = 0; | |
11 | @@ -1441,6 +1442,7 @@ | |
12 | static int iface_info(void) | |
13 | { | |
14 | static int count=0; | |
15 | + struct interface *ife = NULL; | |
16 | ||
17 | if (skfd < 0) { | |
18 | if ((skfd = sockets_open(0)) < 0) { | |
19 | @@ -1455,7 +1457,11 @@ | |
20 | printf(_("Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg\n")); | |
21 | } | |
22 | ||
23 | - if (for_all_interfaces(do_if_print, &flag_all) < 0) { | |
24 | + if (flag_int_name) { | |
25 | + ife = lookup_interface(flag_int_name); | |
26 | + do_if_print(ife, &flag_all); | |
27 | + } | |
28 | + else if (for_all_interfaces(do_if_print, &flag_all) < 0) { | |
29 | perror(_("missing interface information")); | |
30 | exit(1); | |
31 | } | |
32 | @@ -1481,30 +1487,31 @@ | |
33 | { | |
34 | fprintf(stderr, _("usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}\n")); | |
35 | fprintf(stderr, _(" netstat [-vnNcaeol] [<Socket> ...]\n")); | |
36 | - fprintf(stderr, _(" netstat { [-veenNac] -i | [-cnNe] -M | -s } [delay]\n\n")); | |
37 | + fprintf(stderr, _(" netstat { [-veenNac] -i[<Iface>] | [-cnNe] -M | -s } [delay]\n\n")); | |
38 | ||
39 | - fprintf(stderr, _(" -r, --route display routing table\n")); | |
40 | - fprintf(stderr, _(" -i, --interfaces display interface table\n")); | |
41 | - fprintf(stderr, _(" -g, --groups display multicast group memberships\n")); | |
42 | - fprintf(stderr, _(" -s, --statistics display networking statistics (like SNMP)\n")); | |
43 | + fprintf(stderr, _(" -r, --route display routing table\n")); | |
44 | + fprintf(stderr, _(" -i, --interfaces=[<Iface>] display interface table\n")); | |
45 | + fprintf(stderr, _(" -g, --groups display multicast group memberships\n")); | |
46 | + fprintf(stderr, _(" -s, --statistics display networking statistics (like SNMP)\n")); | |
47 | #if HAVE_FW_MASQUERADE | |
48 | - fprintf(stderr, _(" -M, --masquerade display masqueraded connections\n\n")); | |
49 | + fprintf(stderr, _(" -M, --masquerade display masqueraded connections\n\n")); | |
50 | #endif | |
51 | - fprintf(stderr, _(" -v, --verbose be verbose\n")); | |
52 | - fprintf(stderr, _(" -n, --numeric don't resolve names\n")); | |
53 | - fprintf(stderr, _(" --numeric-hosts don't resolve host names\n")); | |
54 | - fprintf(stderr, _(" --numeric-ports don't resolve port names\n")); | |
55 | - fprintf(stderr, _(" --numeric-users don't resolve user names\n")); | |
56 | - fprintf(stderr, _(" -N, --symbolic resolve hardware names\n")); | |
57 | - fprintf(stderr, _(" -e, --extend display other/more information\n")); | |
58 | - fprintf(stderr, _(" -p, --programs display PID/Program name for sockets\n")); | |
59 | - fprintf(stderr, _(" -c, --continuous continuous listing\n\n")); | |
60 | - fprintf(stderr, _(" -l, --listening display listening server sockets\n")); | |
61 | - fprintf(stderr, _(" -a, --all, --listening display all sockets (default: connected)\n")); | |
62 | - fprintf(stderr, _(" -o, --timers display timers\n")); | |
63 | - fprintf(stderr, _(" -F, --fib display Forwarding Information Base (default)\n")); | |
64 | - fprintf(stderr, _(" -C, --cache display routing cache instead of FIB\n\n")); | |
65 | + fprintf(stderr, _(" -v, --verbose be verbose\n")); | |
66 | + fprintf(stderr, _(" -n, --numeric don't resolve names\n")); | |
67 | + fprintf(stderr, _(" --numeric-hosts don't resolve host names\n")); | |
68 | + fprintf(stderr, _(" --numeric-ports don't resolve port names\n")); | |
69 | + fprintf(stderr, _(" --numeric-users don't resolve user names\n")); | |
70 | + fprintf(stderr, _(" -N, --symbolic resolve hardware names\n")); | |
71 | + fprintf(stderr, _(" -e, --extend display other/more information\n")); | |
72 | + fprintf(stderr, _(" -p, --programs display PID/Program name for sockets\n")); | |
73 | + fprintf(stderr, _(" -c, --continuous continuous listing\n\n")); | |
74 | + fprintf(stderr, _(" -l, --listening display listening server sockets\n")); | |
75 | + fprintf(stderr, _(" -a, --all, --listening display all sockets (default: connected)\n")); | |
76 | + fprintf(stderr, _(" -o, --timers display timers\n")); | |
77 | + fprintf(stderr, _(" -F, --fib display Forwarding Information Base (default)\n")); | |
78 | + fprintf(stderr, _(" -C, --cache display routing cache instead of FIB\n\n")); | |
79 | ||
80 | + fprintf(stderr, _(" <Iface>: Name of interface to monitor/list.\n")); | |
81 | fprintf(stderr, _(" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom\n")); | |
82 | fprintf(stderr, _(" <AF>=Use '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF); | |
83 | fprintf(stderr, _(" List of possible address families (which support routing):\n")); | |
84 | @@ -1522,7 +1529,7 @@ | |
85 | { | |
86 | AFTRANS_OPTS, | |
87 | {"version", 0, 0, 'V'}, | |
88 | - {"interfaces", 0, 0, 'i'}, | |
89 | + {"interfaces", 2, 0, 'i'}, | |
90 | {"help", 0, 0, 'h'}, | |
91 | {"route", 0, 0, 'r'}, | |
92 | #if HAVE_FW_MASQUERADE | |
93 | @@ -1560,7 +1567,7 @@ | |
94 | getroute_init(); /* Set up AF routing support */ | |
95 | ||
96 | afname[0] = '\0'; | |
97 | - while ((i = getopt_long(argc, argv, "MCFA:acdegphinNorstuVv?wxl", longopts, &lop)) != EOF) | |
98 | + while ((i = getopt_long(argc, argv, "MCFA:acdegphi::nNorstuVv?wxl", longopts, &lop)) != EOF) | |
99 | switch (i) { | |
100 | case -1: | |
101 | break; | |
102 | @@ -1602,6 +1609,8 @@ | |
103 | flag_prg++; | |
104 | break; | |
105 | case 'i': | |
106 | + if (optarg && strcmp(optarg, "(null)")) | |
107 | + flag_int_name = strdup(optarg); | |
108 | flag_int++; | |
109 | break; | |
110 | case 'n': |