@@ -44,7 +44,7 @@ void usage(int ecode);
4444
4545/* ------------------------------------------------------------------------------------------------------------------ */
4646#define PROG_NAME "sockstat"
47- #define PROG_VERSION "1.0.3 "
47+ #define PROG_VERSION "1.1.0 "
4848
4949#define MAXPROC 16384;
5050/* ------------------------------------------------------------------------------------------------------------------ */
@@ -70,14 +70,19 @@ int main(int argc, char* argv[]) {
7070 int flg_l = 0 ; /* TCP LISTENing sockets */
7171 int flg_n = 0 ; /* NDRV sockets */
7272 int flg_q = 0 ; /* Quiet - hide header */
73+ int flg_T = 0 ; /* Include TCP */
74+ int flg_U = 0 ; /* Include UDP */
7375 int flg_r = 0 ; /* ROUTE sockets */
7476 int flg_u = 0 ; /* UNIX aka LOCAL sockets */
7577 int flg_a = 0 ; /* pseudo-flag ALL socket flags are on */
7678
77- while ((flg = getopt (argc , argv , "46klnrquhv" )) != -1 )
79+
80+ while ((flg = getopt (argc , argv , "46TUklnrquhv" )) != -1 )
7881 switch (flg ) {
7982 case '4' : flg_i4 = 1 ; break ;
8083 case '6' : flg_i6 = 1 ; break ;
84+ case 'T' : flg_T = 1 ; break ;
85+ case 'U' : flg_U = 1 ; break ;
8186 case 'k' : flg_k = 1 ; break ;
8287 case 'l' : flg_l = 1 ; break ;
8388 case 'n' : flg_n = 1 ; break ;
@@ -89,7 +94,7 @@ int main(int argc, char* argv[]) {
8994 default : (void )usage (1 );
9095 }
9196
92- if (!flg_i4 && !flg_i6 && !flg_k && !flg_n && !flg_r && !flg_u ) flg_a = 1 ;
97+ if (!flg_i4 && !flg_i6 && !flg_T && ! flg_U && ! flg_k && !flg_n && !flg_r && !flg_u ) flg_a = 1 ;
9398
9499 if (sysctlbyname ("kern.maxproc" , & mproc , & mproc_len , NULL , 0 ) == -1 ) {
95100 perror ("Unable to get the maximum allowed number of processes" );
@@ -127,8 +132,8 @@ int main(int argc, char* argv[]) {
127132
128133 switch (si .psi .soi_family ) {
129134 case AF_INET :
130- if (flg_i4 || flg_a ) {
131- if (si .psi .soi_kind == SOCKINFO_TCP ) { /* IPv4 TCP */
135+ if (flg_i4 || flg_a || flg_T || flg_U ) {
136+ if (si .psi .soi_kind == SOCKINFO_TCP && ( flg_a || flg_T ) ) { /* IPv4 TCP */
132137 /* Local address and port */
133138 if (si .psi .soi_proto .pri_tcp .tcpsi_ini .insi_lport ) {
134139 sprintf (outstr + strlen (outstr ), "\ttcp4\t%s:%d" ,
@@ -153,7 +158,7 @@ int main(int argc, char* argv[]) {
153158 sprintf (outstr + strlen (outstr ), "\t*:*" );
154159 ready = 1 ;
155160 }
156- } else { /* IPv4 UDP */
161+ } else if ( flg_a || flg_U ) { /* IPv4 UDP */
157162 /* Local address and port */
158163 if (si .psi .soi_proto .pri_in .insi_lport ) {
159164 sprintf (outstr + strlen (outstr ), "\tudp4\t%s:%d" ,
@@ -179,8 +184,8 @@ int main(int argc, char* argv[]) {
179184 break ;
180185
181186 case AF_INET6 :
182- if (flg_i6 || flg_a ) {
183- if (si .psi .soi_kind == SOCKINFO_TCP ) { /* IPv6 TCP */
187+ if (flg_i6 || flg_a || flg_T || flg_U ) {
188+ if (si .psi .soi_kind == SOCKINFO_TCP && ( flg_a || flg_T ) ) { /* IPv6 TCP */
184189 /* Local address and port */
185190 if (si .psi .soi_proto .pri_tcp .tcpsi_ini .insi_lport ) {
186191 sprintf (outstr + strlen (outstr ), "\ttcp6\t%s:%d" ,
@@ -205,7 +210,7 @@ int main(int argc, char* argv[]) {
205210 sprintf (outstr + strlen (outstr ), "\t*:*" );
206211 ready = 1 ;
207212 }
208- } else { /* IPv6 UDP */
213+ } else if ( flg_a || flg_U ) { /* IPv6 UDP */
209214 listen = 1 ;
210215 /* Local address and port */
211216 if (si .psi .soi_proto .pri_in .insi_lport ) {
@@ -324,9 +329,11 @@ int main(int argc, char* argv[]) {
324329
325330/* ------------------------------------------------------------------------------------------------------------------ */
326331void usage (int ecode ) {
327- printf ("Usage: sockstat [-46klNrquhv ]\n\n\
332+ printf ("Usage: sockstat [-46TUklnrquhv ]\n\n\
328333 -4\tShow AF_INET (IPv4) sockets\n\
329334 -6\tShow AF_INET6 (IPv6) sockets\n\
335+ -T\tShow TCP protocol\n\
336+ -U\tShow UDP protocol\n\
330337 -k\tShow AF_SYSTEM (Kernel) sockets\n\
331338 -n\tShow AF_NDRV sockets\n\
332339 -r\tShow AF_ROUTE sockets\n\
0 commit comments