@@ -44,7 +44,7 @@ void usage(int ecode);
4444
4545/* ------------------------------------------------------------------------------------------------------------------ */
4646#define PROG_NAME "sockstat"
47- #define PROG_VERSION "0.6 "
47+ #define PROG_VERSION "1.0 "
4848
4949#define MAXPROC 16384;
5050/* ------------------------------------------------------------------------------------------------------------------ */
@@ -60,54 +60,35 @@ int main(int argc, char* argv[]) {
6060 struct passwd * pwd ;
6161 char buf [INET6_ADDRSTRLEN ] = {0 }; /* Local/Remote IPv4/6 addresses bufs */
6262 char outstr [160 ] = {0 };
63+ int ready = 0 ; /* Socket info collected - ready to print */
64+ int listen = 1 ; /* Socket is listening for flg_l output */
65+
6366 int flg = 0 ; /* CLI flags, see below */
6467 int flg_i4 = 0 ; /* IPv4 */
6568 int flg_i6 = 0 ; /* IPv6 */
6669 int flg_k = 0 ; /* Kern/system sockets */
6770 int flg_l = 0 ; /* TCP LISTENing sockets */
68- int flg_N = 0 ; /* NDRV sockets */
71+ int flg_n = 0 ; /* NDRV sockets */
72+ int flg_q = 0 ; /* Quiet - hide header */
6973 int flg_r = 0 ; /* ROUTE sockets */
7074 int flg_u = 0 ; /* UNIX aka LOCAL sockets */
7175 int flg_a = 0 ; /* pseudo-flag ALL socket flags are on */
72- int ready = 0 ;
73- int listen = 1 ;
7476
75- while ((flg = getopt (argc , argv , "46klNruh " )) != -1 )
77+ while ((flg = getopt (argc , argv , "46klnrquh " )) != -1 )
7678 switch (flg ) {
77- case '4' :
78- flg_i4 = 1 ;
79- break ;
80-
81- case '6' :
82- flg_i6 = 1 ;
83- break ;
84-
85- case 'k' :
86- flg_k = 1 ;
87- break ;
88-
89- case 'l' :
90- flg_l = 1 ;
91- break ;
92-
93- case 'N' :
94- flg_N = 1 ;
95- break ;
96-
97- case 'r' :
98- flg_r = 1 ;
99- break ;
100-
101- case 'u' :
102- flg_u = 1 ;
103- break ;
104-
105- case 'h' :
106- default :
107- (void )usage (0 );
79+ case '4' : flg_i4 = 1 ; break ;
80+ case '6' : flg_i6 = 1 ; break ;
81+ case 'k' : flg_k = 1 ; break ;
82+ case 'l' : flg_l = 1 ; break ;
83+ case 'n' : flg_n = 1 ; break ;
84+ case 'q' : flg_q = 1 ; break ;
85+ case 'r' : flg_r = 1 ; break ;
86+ case 'u' : flg_u = 1 ; break ;
87+ case 'h' : (void )usage (0 ); break ;
88+ default : (void )usage (1 );
10889 }
10990
110- if (!flg_i4 && !flg_i6 && !flg_k && !flg_N && !flg_r && !flg_u ) flg_a = 1 ;
91+ if (!flg_i4 && !flg_i6 && !flg_k && !flg_n && !flg_r && !flg_u ) flg_a = 1 ;
11192
11293 if (sysctlbyname ("kern.maxproc" , & mproc , & mproc_len , NULL , 0 ) == -1 ) {
11394 perror ("Unable to get the maximum allowed number of processes" );
@@ -121,8 +102,9 @@ int main(int argc, char* argv[]) {
121102
122103 fds = (struct proc_fdinfo * )malloc (sizeof (struct proc_fdinfo ) * OPEN_MAX );
123104
124- printf ("%-23s %-5s %-31s %-3s\t%-5s\t%s\t\t%s\n" ,
125- "USER" , "PID" , "COMMAND" , "FD" , "PROTO" , "LOCAL ADDRESS" , "REMOTE ADDRESS" );
105+ if (!flg_q )
106+ printf ("%-23s %-5s %-31s %-3s\t%-5s\t%s\t\t%s\n" ,
107+ "USER" , "PID" , "COMMAND" , "FD" , "PROTO" , "LOCAL ADDRESS" , "REMOTE ADDRESS" );
126108
127109 for (int i = 0 ; i < npids /sizeof (int ); i ++ ) {
128110 /* PID => FDs */
@@ -280,7 +262,7 @@ int main(int argc, char* argv[]) {
280262 break ;
281263
282264 case AF_NDRV :
283- if (flg_N || flg_a ) {
265+ if (flg_n || flg_a ) {
284266 if (si .psi .soi_kind == SOCKINFO_NDRV ) { /* is this check useless? */
285267 sprintf (outstr + strlen (outstr ), "\tndrv\tunit: %d name: %s" ,
286268 si .psi .soi_proto .pri_ndrv .ndrvsi_if_unit ,
@@ -341,18 +323,20 @@ int main(int argc, char* argv[]) {
341323
342324/* ------------------------------------------------------------------------------------------------------------------ */
343325void usage (int ecode ) {
344- printf ("Usage:\n\
345- sockstat [-46klNruh]\n\n\
326+ printf ("%s-%s\n\n\
327+ Usage:\n\
328+ sockstat [-46klNrquh]\n\n\
346329 -4\tShow AF_INET (IPv4) sockets\n\
347330 -6\tShow AF_INET (IPv6) sockets\n\
348331 -k\tShow AF_SYSTEM (Kernel) sockets\n\
349- -N \tShow AF_NDRV sockets\n\
332+ -n \tShow AF_NDRV sockets\n\
350333 -r\tShow AF_ROUTE sockets\n\
351334 -u\tShow AF_LOCAL (UNIX) sockets\n\
352335 \n\
353336 -l\tShow only LISTENing sockets\n\
337+ -q\tQuiet mode - suppress header\n\
354338 \n\
355- -h\tThis help message\n\n" );
339+ -h\tThis help message\n\n" , PROG_NAME , PROG_VERSION );
356340
357341 exit (ecode );
358342}
0 commit comments