legends:
-->
-=>
=->
==>
<--
<=-
<-=
<==

--- /usr/src/usr.bin/fstat/fstat.c Wed Oct 23 00:40:27 2013
+++ /usr/src/usr.bin/fstat/fstat.c Thu May 22 15:59:22 2014
@@ -616,6 +616,23 @@
  }
 }

+void print_connection_state(uint32_t s)
+{char *o,p[]=" <==> ";
+ if(SS_CONNECTOUT&s)
+  {o=p+1;
+   o[0]=' ';
+  }
+ else
+  {o=p;
+   o[4]=' ';
+   o[5]=0;
+  }
+ if(SS_CANTSENDMORE&s) p[2]='-';
+ if(SS_CANTRCVMORE&s) p[3]='-';
+ if(!(SS_ISCONNECTED&s)) p[2]=p[3]='-';
+ printf("%s",o);
+}
+
 void
 print_inet_details(struct kinfo_file *kf)
 {
@@ -629,10 +646,7 @@
  printf(" %s:%d", laddr.s_addr == INADDR_ANY ? "*" :
     inet_ntoa(laddr), ntohs(kf->inp_lport));
  if (kf->inp_fport) {
- if (kf->so_state & SS_CONNECTOUT)
- printf(" --> ");
- else
- printf(" <-- ");
+ print_connection_state(kf->so_state);
  printf("%s:%d",
     faddr.s_addr == INADDR_ANY ? "*" :
     inet_ntoa(faddr), ntohs(kf->inp_fport));
@@ -669,10 +683,7 @@
     IN6_IS_ADDR_UNSPECIFIED(&laddr6) ? "*" :
     xaddrbuf, ntohs(kf->inp_lport));
  if (kf->inp_fport) {
- if (kf->so_state & SS_CONNECTOUT)
- printf(" --> ");
- else
- printf(" <-- ");
+ print_connection_state(kf->so_state);
  snprintf(xaddrbuf, sizeof(xaddrbuf), "[%s]",
     inet6_addrstr(&faddr6));
  printf("%s:%d",

Reply via email to