[BACK]Return to inet.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / netstat

Diff for /src/usr.bin/netstat/inet.c between version 1.37 and 1.38

version 1.37, 1999/12/06 11:17:26 version 1.38, 1999/12/08 12:30:17
Line 93 
Line 93 
   
 char    *inetname __P((struct in_addr *));  char    *inetname __P((struct in_addr *));
 void    inetprint __P((struct in_addr *, int, char *, int));  void    inetprint __P((struct in_addr *, int, char *, int));
   #ifdef INET6
   char    *inet6name __P((struct in6_addr *));
   void    inet6print __P((struct in6_addr *, int, char *, int));
   #endif
   
 /*  /*
  * Print a summary of connections related to an Internet   * Print a summary of connections related to an Internet
Line 110 
Line 114 
         struct inpcb inpcb;          struct inpcb inpcb;
         int istcp;          int istcp;
         static int first = 1;          static int first = 1;
           char *name0;
           char namebuf[20];
   
           name0 = name;
         if (off == 0)          if (off == 0)
                 return;                  return;
         istcp = strcmp(name, "tcp") == 0;          istcp = strcmp(name, "tcp") == 0;
Line 153 
Line 160 
                                     "(state)");                                      "(state)");
                         first = 0;                          first = 0;
                 }                  }
                 if (Aflag)                  if (Aflag) {
                         if (istcp)                          if (istcp)
                                 printf("%*p ", PLEN, inpcb.inp_ppcb);                                  printf("%*p ", PLEN, inpcb.inp_ppcb);
                         else                          else
                                 printf("%*p ", PLEN, prev);                                  printf("%*p ", PLEN, prev);
                   }
   #ifdef INET6
                   if (inpcb.inp_flags & INP_IPV6) {
                           strcpy(namebuf, name0);
                           strcat(namebuf, "6");
                           name = namebuf;
                   } else
                           name = name0;
   #endif
                 printf("%-5.5s %6ld %6ld ", name, sockb.so_rcv.sb_cc,                  printf("%-5.5s %6ld %6ld ", name, sockb.so_rcv.sb_cc,
                         sockb.so_snd.sb_cc);                          sockb.so_snd.sb_cc);
                 inetprint(&inpcb.inp_laddr, (int)inpcb.inp_lport, name, 1);  #ifdef INET6
                 inetprint(&inpcb.inp_faddr, (int)inpcb.inp_fport, name, 0);                  if (inpcb.inp_flags & INP_IPV6) {
                           inet6print(&inpcb.inp_laddr6, (int)inpcb.inp_lport,
                                   name, 1);
                           inet6print(&inpcb.inp_faddr6, (int)inpcb.inp_fport,
                                   name, 0);
                   } else
   #endif
                   {
                           inetprint(&inpcb.inp_laddr, (int)inpcb.inp_lport,
                                   name, 1);
                           inetprint(&inpcb.inp_faddr, (int)inpcb.inp_fport,
                                   name, 0);
                   }
                 if (istcp) {                  if (istcp) {
                         if (tcpcb.t_state < 0 || tcpcb.t_state >= TCP_NSTATES)                          if (tcpcb.t_state < 0 || tcpcb.t_state >= TCP_NSTATES)
                                 printf(" %d", tcpcb.t_state);                                  printf(" %d", tcpcb.t_state);
Line 189 
Line 217 
   
 #define p(f, m) if (tcpstat.f || sflag <= 1) \  #define p(f, m) if (tcpstat.f || sflag <= 1) \
     printf(m, tcpstat.f, plural(tcpstat.f))      printf(m, tcpstat.f, plural(tcpstat.f))
   #define p1(f, m) if (tcpstat.f || sflag <= 1) \
       printf(m, tcpstat.f)
 #define p2(f1, f2, m) if (tcpstat.f1 || tcpstat.f2 || sflag <= 1) \  #define p2(f1, f2, m) if (tcpstat.f1 || tcpstat.f2 || sflag <= 1) \
     printf(m, tcpstat.f1, plural(tcpstat.f1), tcpstat.f2, plural(tcpstat.f2))      printf(m, tcpstat.f1, plural(tcpstat.f1), tcpstat.f2, plural(tcpstat.f2))
   #define p2a(f1, f2, m) if (tcpstat.f1 || tcpstat.f2 || sflag <= 1) \
       printf(m, tcpstat.f1, plural(tcpstat.f1), tcpstat.f2)
 #define p3(f, m) if (tcpstat.f || sflag <= 1) \  #define p3(f, m) if (tcpstat.f || sflag <= 1) \
     printf(m, tcpstat.f, plurales(tcpstat.f))      printf(m, tcpstat.f, plurales(tcpstat.f))
   
         p(tcps_sndtotal, "\t%ld packet%s sent\n");          p(tcps_sndtotal, "\t%u packet%s sent\n");
         p2(tcps_sndpack,tcps_sndbyte,          p2(tcps_sndpack,tcps_sndbyte,
                 "\t\t%ld data packet%s (%qd byte%s)\n");                  "\t\t%u data packet%s (%qd byte%s)\n");
         p2(tcps_sndrexmitpack, tcps_sndrexmitbyte,          p2(tcps_sndrexmitpack, tcps_sndrexmitbyte,
                 "\t\t%ld data packet%s (%qd byte%s) retransmitted\n");                  "\t\t%u data packet%s (%qd byte%s) retransmitted\n");
         p(tcps_sndrexmitfast, "\t\t%qd fast retransmitted packet%s\n");          p(tcps_sndrexmitfast, "\t\t%qd fast retransmitted packet%s\n");
         p2(tcps_sndacks, tcps_delack,          p2a(tcps_sndacks, tcps_delack,
                 "\t\t%ld ack-only packet%s (%ld delayed)\n");                  "\t\t%u ack-only packet%s (%u delayed)\n");
         p(tcps_sndurg, "\t\t%ld URG only packet%s\n");          p(tcps_sndurg, "\t\t%u URG only packet%s\n");
         p(tcps_sndprobe, "\t\t%ld window probe packet%s\n");          p(tcps_sndprobe, "\t\t%u window probe packet%s\n");
         p(tcps_sndwinup, "\t\t%ld window update packet%s\n");          p(tcps_sndwinup, "\t\t%u window update packet%s\n");
         p(tcps_sndctrl, "\t\t%ld control packet%s\n");          p(tcps_sndctrl, "\t\t%u control packet%s\n");
         p(tcps_rcvtotal, "\t%ld packet%s received\n");          p(tcps_rcvtotal, "\t%u packet%s received\n");
         p2(tcps_rcvackpack, tcps_rcvackbyte, "\t\t%ld ack%s (for %qd byte%s)\n");          p2(tcps_rcvackpack, tcps_rcvackbyte, "\t\t%u ack%s (for %qd byte%s)\n");
         p(tcps_rcvdupack, "\t\t%ld duplicate ack%s\n");          p(tcps_rcvdupack, "\t\t%u duplicate ack%s\n");
         p(tcps_rcvacktoomuch, "\t\t%ld ack%s for unsent data\n");          p(tcps_rcvacktoomuch, "\t\t%u ack%s for unsent data\n");
         p2(tcps_rcvpack, tcps_rcvbyte,          p2(tcps_rcvpack, tcps_rcvbyte,
                 "\t\t%ld packet%s (%qd byte%s) received in-sequence\n");                  "\t\t%u packet%s (%qu byte%s) received in-sequence\n");
         p2(tcps_rcvduppack, tcps_rcvdupbyte,          p2(tcps_rcvduppack, tcps_rcvdupbyte,
                 "\t\t%ld completely duplicate packet%s (%qd byte%s)\n");                  "\t\t%u completely duplicate packet%s (%qd byte%s)\n");
         p(tcps_pawsdrop, "\t\t%ld old duplicate packet%s\n");          p(tcps_pawsdrop, "\t\t%u old duplicate packet%s\n");
         p2(tcps_rcvpartduppack, tcps_rcvpartdupbyte,          p2(tcps_rcvpartduppack, tcps_rcvpartdupbyte,
                 "\t\t%ld packet%s with some dup. data (%qd byte%s duped)\n");                  "\t\t%u packet%s with some dup. data (%qd byte%s duped)\n");
         p2(tcps_rcvoopack, tcps_rcvoobyte,          p2(tcps_rcvoopack, tcps_rcvoobyte,
                 "\t\t%ld out-of-order packet%s (%qd byte%s)\n");                  "\t\t%u out-of-order packet%s (%qd byte%s)\n");
         p2(tcps_rcvpackafterwin, tcps_rcvbyteafterwin,          p2(tcps_rcvpackafterwin, tcps_rcvbyteafterwin,
                 "\t\t%ld packet%s (%qd byte%s) of data after window\n");                  "\t\t%u packet%s (%qd byte%s) of data after window\n");
         p(tcps_rcvwinprobe, "\t\t%ld window probe%s\n");          p(tcps_rcvwinprobe, "\t\t%u window probe%s\n");
         p(tcps_rcvwinupd, "\t\t%ld window update packet%s\n");          p(tcps_rcvwinupd, "\t\t%u window update packet%s\n");
         p(tcps_rcvafterclose, "\t\t%ld packet%s received after close\n");          p(tcps_rcvafterclose, "\t\t%u packet%s received after close\n");
         p(tcps_rcvbadsum, "\t\t%ld discarded for bad checksum%s\n");          p(tcps_rcvbadsum, "\t\t%u discarded for bad checksum%s\n");
         p(tcps_rcvbadoff, "\t\t%ld discarded for bad header offset field%s\n");          p(tcps_rcvbadoff, "\t\t%u discarded for bad header offset field%s\n");
         p(tcps_rcvshort, "\t\t%ld discarded because packet too short\n");          p1(tcps_rcvshort, "\t\t%u discarded because packet too short\n");
         p(tcps_rcvnosec, "\t\t%ld discarded for missing IPSec protection\n");          p1(tcps_rcvnosec, "\t\t%u discarded for missing IPSec protection\n");
         p(tcps_connattempt, "\t%ld connection request%s\n");          p(tcps_connattempt, "\t%u connection request%s\n");
         p(tcps_accepts, "\t%ld connection accept%s\n");          p(tcps_accepts, "\t%u connection accept%s\n");
         p(tcps_connects, "\t%ld connection%s established (including accepts)\n");          p(tcps_connects, "\t%u connection%s established (including accepts)\n");
         p2(tcps_closed, tcps_drops,          p2(tcps_closed, tcps_drops,
                 "\t%ld connection%s closed (including %ld drop%s)\n");                  "\t%u connection%s closed (including %u drop%s)\n");
         p(tcps_conndrops, "\t%ld embryonic connection%s dropped\n");          p(tcps_conndrops, "\t%u embryonic connection%s dropped\n");
         p2(tcps_rttupdated, tcps_segstimed,          p2(tcps_rttupdated, tcps_segstimed,
                 "\t%ld segment%s updated rtt (of %ld attempt%s)\n");                  "\t%u segment%s updated rtt (of %u attempt%s)\n");
         p(tcps_rexmttimeo, "\t%ld retransmit timeout%s\n");          p(tcps_rexmttimeo, "\t%u retransmit timeout%s\n");
         p(tcps_timeoutdrop, "\t\t%ld connection%s dropped by rexmit timeout\n");          p(tcps_timeoutdrop, "\t\t%u connection%s dropped by rexmit timeout\n");
         p(tcps_persisttimeo, "\t%ld persist timeout%s\n");          p(tcps_persisttimeo, "\t%u persist timeout%s\n");
         p(tcps_keeptimeo, "\t%ld keepalive timeout%s\n");          p(tcps_keeptimeo, "\t%u keepalive timeout%s\n");
         p(tcps_keepprobe, "\t\t%ld keepalive probe%s sent\n");          p(tcps_keepprobe, "\t\t%u keepalive probe%s sent\n");
         p(tcps_keepdrops, "\t\t%ld connection%s dropped by keepalive\n");          p(tcps_keepdrops, "\t\t%u connection%s dropped by keepalive\n");
         p(tcps_predack, "\t%ld correct ACK header prediction%s\n");          p(tcps_predack, "\t%u correct ACK header prediction%s\n");
         p(tcps_preddat, "\t%ld correct data packet header prediction%s\n");          p(tcps_preddat, "\t%u correct data packet header prediction%s\n");
         p3(tcps_pcbhashmiss, "\t%ld PCB cache miss%s\n");          p3(tcps_pcbhashmiss, "\t%u PCB cache miss%s\n");
         p(tcps_badsyn, "\t%ld SYN packet%s received with same src/dst address/port\n");          p(tcps_badsyn, "\t%u SYN packet%s received with same src/dst address/port\n");
 #undef p  #undef p
   #undef p1
 #undef p2  #undef p2
   #undef p2a
 #undef p3  #undef p3
 }  }
   
Line 268 
Line 302 
         printf("%s:\n", name);          printf("%s:\n", name);
 #define p(f, m) if (udpstat.f || sflag <= 1) \  #define p(f, m) if (udpstat.f || sflag <= 1) \
     printf(m, udpstat.f, plural(udpstat.f))      printf(m, udpstat.f, plural(udpstat.f))
   #define p1(f, m) if (udpstat.f || sflag <= 1) \
       printf(m, udpstat.f)
         p(udps_ipackets, "\t%lu datagram%s received\n");          p(udps_ipackets, "\t%lu datagram%s received\n");
         p(udps_hdrops, "\t%lu with incomplete header\n");          p1(udps_hdrops, "\t%lu with incomplete header\n");
         p(udps_badlen, "\t%lu with bad data length field\n");          p1(udps_badlen, "\t%lu with bad data length field\n");
         p(udps_badsum, "\t%lu with bad checksum\n");          p1(udps_badsum, "\t%lu with bad checksum\n");
         p(udps_nosum, "\t%lu with no checksum\n");          p1(udps_nosum, "\t%lu with no checksum\n");
         p(udps_noport, "\t%lu dropped due to no socket\n");          p1(udps_noport, "\t%lu dropped due to no socket\n");
         p(udps_noportbcast, "\t%lu broadcast/multicast datagram%s dropped due to no socket\n");          p(udps_noportbcast, "\t%lu broadcast/multicast datagram%s dropped due to no socket\n");
         p(udps_nosec, "\t%lu dropped due to missing IPSec protection\n");          p1(udps_nosec, "\t%lu dropped due to missing IPSec protection\n");
         p(udps_fullsock, "\t%lu dropped due to full socket buffers\n");          p1(udps_fullsock, "\t%lu dropped due to full socket buffers\n");
         delivered = udpstat.udps_ipackets -          delivered = udpstat.udps_ipackets -
                     udpstat.udps_hdrops -                      udpstat.udps_hdrops -
                     udpstat.udps_badlen -                      udpstat.udps_badlen -
Line 287 
Line 323 
         if (delivered || sflag <= 1)          if (delivered || sflag <= 1)
                 printf("\t%lu delivered\n", delivered);                  printf("\t%lu delivered\n", delivered);
         p(udps_opackets, "\t%lu datagram%s output\n");          p(udps_opackets, "\t%lu datagram%s output\n");
         p(udps_pcbhashmiss, "\t%lu missed PCB cache\n");          p1(udps_pcbhashmiss, "\t%lu missed PCB cache\n");
 #undef p  #undef p
   #undef p1
 }  }
   
 /*  /*
Line 308 
Line 345 
   
 #define p(f, m) if (ipstat.f || sflag <= 1) \  #define p(f, m) if (ipstat.f || sflag <= 1) \
     printf(m, ipstat.f, plural(ipstat.f))      printf(m, ipstat.f, plural(ipstat.f))
   #define p1(f, m) if (ipstat.f || sflag <= 1) \
       printf(m, ipstat.f)
   
         p(ips_total, "\t%lu total packet%s received\n");          p(ips_total, "\t%lu total packet%s received\n");
         p(ips_badsum, "\t%lu bad header checksum%s\n");          p(ips_badsum, "\t%lu bad header checksum%s\n");
         p(ips_toosmall, "\t%lu with size smaller than minimum\n");          p1(ips_toosmall, "\t%lu with size smaller than minimum\n");
         p(ips_tooshort, "\t%lu with data size < data length\n");          p1(ips_tooshort, "\t%lu with data size < data length\n");
         p(ips_badhlen, "\t%lu with header length < data size\n");          p1(ips_badhlen, "\t%lu with header length < data size\n");
         p(ips_badlen, "\t%lu with data length < header length\n");          p1(ips_badlen, "\t%lu with data length < header length\n");
         p(ips_badoptions, "\t%lu with bad options\n");          p1(ips_badoptions, "\t%lu with bad options\n");
         p(ips_badvers, "\t%lu with incorrect version number\n");          p1(ips_badvers, "\t%lu with incorrect version number\n");
         p(ips_fragments, "\t%lu fragment%s received\n");          p(ips_fragments, "\t%lu fragment%s received\n");
         p(ips_fragdropped, "\t%lu fragment%s dropped (dup or out of space)\n");          p(ips_fragdropped, "\t%lu fragment%s dropped (dup or out of space)\n");
         p(ips_badfrags, "\t%lu malformed fragment%s dropped\n");          p(ips_badfrags, "\t%lu malformed fragment%s dropped\n");
Line 334 
Line 373 
         p(ips_fragmented, "\t%lu output datagram%s fragmented\n");          p(ips_fragmented, "\t%lu output datagram%s fragmented\n");
         p(ips_ofragments, "\t%lu fragment%s created\n");          p(ips_ofragments, "\t%lu fragment%s created\n");
         p(ips_cantfrag, "\t%lu datagram%s that can't be fragmented\n");          p(ips_cantfrag, "\t%lu datagram%s that can't be fragmented\n");
         p(ips_rcvmemdrop, "\t%lu fragment floods\n");          p1(ips_rcvmemdrop, "\t%lu fragment floods\n");
 #undef p  #undef p
   #undef p1
 }  }
   
 static  char *icmpnames[] = {  static  char *icmpnames[] = {
Line 525 
Line 565 
 {  {
         struct servent *sp = 0;          struct servent *sp = 0;
         char line[80], *cp, *nam;          char line[80], *cp, *nam;
         int proton;  
         int width;          int width;
   
         snprintf(line, sizeof line, "%.*s.", (Aflag && !nflag) ? 12 : 16,          snprintf(line, sizeof line, "%.*s.", (Aflag && !nflag) ? 12 : 16,
Line 621 
Line 660 
   
 #define p(f, m) if (ahstat.f || sflag <= 1) \  #define p(f, m) if (ahstat.f || sflag <= 1) \
     printf(m, ahstat.f, plural(ahstat.f))      printf(m, ahstat.f, plural(ahstat.f))
   #define p1(f, m) if (ahstat.f || sflag <= 1) \
       printf(m, ahstat.f)
   
         p(ahs_input, "\t%u input AH packets\n");          p1(ahs_input, "\t%u input AH packets\n");
         p(ahs_output, "\t%u output AH packets\n");          p1(ahs_output, "\t%u output AH packets\n");
         p(ahs_hdrops, "\t%u packet%s shorter than header shows\n");          p(ahs_hdrops, "\t%u packet%s shorter than header shows\n");
         p(ahs_pdrops, "\t%u packet%s dropped due to policy\n");          p(ahs_pdrops, "\t%u packet%s dropped due to policy\n");
         p(ahs_notdb, "\t%u packet%s for which no TDB was found\n");          p(ahs_notdb, "\t%u packet%s for which no TDB was found\n");
Line 640 
Line 681 
         p(ahs_obytes, "\t%qu output byte%s\n");          p(ahs_obytes, "\t%qu output byte%s\n");
   
 #undef p  #undef p
   #undef p1
 }  }
   
 /*  /*
Line 693 
Line 735 
 #define p(f, m) if (espstat.f || sflag <= 1) \  #define p(f, m) if (espstat.f || sflag <= 1) \
     printf(m, espstat.f, plural(espstat.f))      printf(m, espstat.f, plural(espstat.f))
   
         p(esps_input, "\t%u input ESP packets\n");          p(esps_input, "\t%u input ESP packet%s\n");
         p(esps_output, "\t%u output ESP packets\n");          p(esps_output, "\t%u output ESP packet%s\n");
         p(esps_hdrops, "\t%u packet%s shorter than header shows\n");          p(esps_hdrops, "\t%u packet%s shorter than header shows\n");
         p(esps_pdrops, "\t%u packet%s dropped due to policy\n");          p(esps_pdrops, "\t%u packet%s dropped due to policy\n");
         p(esps_notdb, "\t%u packet%s for which no TDB was found\n");          p(esps_notdb, "\t%u packet%s for which no TDB was found\n");

Legend:
Removed from v.1.37  
changed lines
  Added in v.1.38