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

Diff for /src/usr.bin/netstat/inet6.c between version 1.4 and 1.5

version 1.4, 2000/01/18 05:39:35 version 1.5, 2000/02/28 11:57:32
Line 39 
Line 39 
 static char sccsid[] = "@(#)inet.c      8.4 (Berkeley) 4/20/94";  static char sccsid[] = "@(#)inet.c      8.4 (Berkeley) 4/20/94";
 #else  #else
 /*__RCSID("$OpenBSD$");*/  /*__RCSID("$OpenBSD$");*/
 /*__RCSID("KAME Id: inet6.c,v 1.4 1999/12/02 04:47:27 itojun Exp");*/  /*__RCSID("KAME Id: inet6.c,v 1.10 2000/02/09 10:49:31 itojun Exp");*/
 #endif  #endif
 #endif /* not lint */  #endif /* not lint */
   
Line 60 
Line 60 
 #include <netinet/ip.h>  #include <netinet/ip.h>
 #include <netinet/ip_var.h>  #include <netinet/ip_var.h>
 #endif  #endif
 #include <netinet6/in6_var.h>  
 #include <netinet6/ip6_var.h>  #include <netinet6/ip6_var.h>
   #include <netinet6/in6_var.h>
 #include <netinet6/pim6_var.h>  #include <netinet6/pim6_var.h>
   
 #include <arpa/inet.h>  #include <arpa/inet.h>
Line 82 
Line 82 
 char    *inet6name __P((struct in6_addr *));  char    *inet6name __P((struct in6_addr *));
 void    inet6print __P((struct in6_addr *, int, char *));  void    inet6print __P((struct in6_addr *, int, char *));
   
 #if 0  
 /*  
  * Print a summary of connections related to an Internet  
  * protocol.  For TCP, also give state of connection.  
  * Listening processes (aflag) are suppressed unless the  
  * -a (all) flag is specified.  
  */  
 void  
 ip6protopr(off, name)  
         u_long off;  
         char *name;  
 {  
         struct in6pcb cb;  
         register struct in6pcb *prev, *next;  
         int istcp;  
         static int first = 1;  
   
         if (off == 0)  
                 return;  
         istcp = strcmp(name, "tcp6") == 0;  
         kread(off, (char *)&cb, sizeof (struct in6pcb));  
         in6pcb = cb;  
         prev = (struct in6pcb *)off;  
         if (in6pcb.in6p_next == (struct in6pcb *)off)  
                 return;  
         while (in6pcb.in6p_next != (struct in6pcb *)off) {  
                 next = in6pcb.in6p_next;  
                 kread((u_long)next, (char *)&in6pcb, sizeof (in6pcb));  
                 if (in6pcb.in6p_prev != prev) {  
                         printf("???\n");  
                         break;  
                 }  
                 if (!aflag && IN6_IS_ADDR_UNSPECIFIED(&in6pcb.in6p_laddr)) {  
                         prev = next;  
                         continue;  
                 }  
                 kread((u_long)in6pcb.in6p_socket, (char *)&sockb, sizeof (sockb));  
                 if (istcp) {  
 #ifdef TCP6  
                         kread((u_long)in6pcb.in6p_ppcb,  
                             (char *)&tcp6cb, sizeof (tcp6cb));  
 #else  
                         kread((u_long)in6pcb.in6p_ppcb,  
                             (char *)&tcpcb, sizeof (tcpcb));  
 #endif  
                 }  
                 if (first) {  
                         printf("Active Internet6 connections");  
                         if (aflag)  
                                 printf(" (including servers)");  
                         putchar('\n');  
                         if (Aflag)  
                                 printf("%-8.8s ", "PCB");  
                         printf(Aflag ?  
                                 "%-5.5s %-6.6s %-6.6s  %-18.18s %-18.18s %s\n" :  
                                 "%-5.5s %-6.6s %-6.6s  %-22.22s %-22.22s %s\n",  
                                 "Proto", "Recv-Q", "Send-Q",  
                                 "Local Address", "Foreign Address", "(state)");  
                         first = 0;  
                 }  
                 if (Aflag) {  
                         if (istcp)  
                                 printf("%8p ", in6pcb.in6p_ppcb);  
                         else  
                                 printf("%8p ", next);  
                 }  
                 printf("%-5.5s %6ld %6ld ", name, sockb.so_rcv.sb_cc,  
                         sockb.so_snd.sb_cc);  
                 /* xxx */  
                 inet6print(&in6pcb.in6p_laddr, (int)in6pcb.in6p_lport, name);  
                 inet6print(&in6pcb.in6p_faddr, (int)in6pcb.in6p_fport, name);  
                 if (istcp) {  
 #ifdef TCP6  
                         if (tcp6cb.t_state < 0 || tcp6cb.t_state >= TCP6_NSTATES)  
                                 printf(" %d", tcp6cb.t_state);  
                         else  
                                 printf(" %s", tcp6states[tcp6cb.t_state]);  
 #else  
                         if (tcpcb.t_state < 0 || tcpcb.t_state >= TCP_NSTATES)  
                                 printf(" %d", tcpcb.t_state);  
                         else  
                                 printf(" %s", tcpstates[tcpcb.t_state]);  
 #endif  
                 }  
                 putchar('\n');  
                 prev = next;  
         }  
 }  
 #endif  
   
 static  char *ip6nh[] = {  static  char *ip6nh[] = {
         "hop by hop",          "hop by hop",
         "ICMP",          "ICMP",
Line 485 
Line 395 
                         printf("\t\t%s: %qu\n", ip6nh[i],                          printf("\t\t%s: %qu\n", ip6nh[i],
                                ip6stat.ip6s_nxthist[i]);                                 ip6stat.ip6s_nxthist[i]);
                 }                  }
         if (ip6stat.ip6s_m1 || sflag <= 1)          printf("\tMbuf statics:\n");
                 printf("\tMbuf statics:\n");          printf("\t\t%qu one mbuf\n", ip6stat.ip6s_m1);
         p(ip6s_m1, "\t\t%qu one mbuf\n");  
         for (first = 1, i = 0; i < 32; i++) {          for (first = 1, i = 0; i < 32; i++) {
                 char ifbuf[IFNAMSIZ];                  char ifbuf[IFNAMSIZ];
                 if (ip6stat.ip6s_m2m[i] != 0) {                  if (ip6stat.ip6s_m2m[i] != 0) {
Line 500 
Line 409 
                                ip6stat.ip6s_m2m[i]);                                 ip6stat.ip6s_m2m[i]);
                 }                  }
         }          }
         p(ip6s_mext1, "\t\t%qu one ext mbuf\n");          printf("\t\t%qu one ext mbuf\n", ip6stat.ip6s_mext1);
         p(ip6s_mext2m, "\t\t%qu two or more ext mbuf\n");          printf("\t\t%qu two or more ext mbuf\n", ip6stat.ip6s_mext2m);
         p(ip6s_exthdrtoolong, "\t%qu packet%s whose headers are not continuous\n");          p(ip6s_exthdrtoolong, "\t%qu packet%s whose headers are not continuous\n");
         p(ip6s_nogif, "\t%qu tunneling packet%s that can't find gif\n");          p(ip6s_nogif, "\t%qu tunneling packet%s that can't find gif\n");
           p(ip6s_toomanyhdr, "\t%qu packet%s discarded due to too may headers\n");
   
           if (ip6stat.ip6s_exthdrget || ip6stat.ip6s_exthdrget0) {
                   p(ip6s_exthdrget, "\t%qu use%s of IP6_EXTHDR_GET\n");
                   p(ip6s_exthdrget0, "\t%qu use%s of IP6_EXTHDR_GET0\n");
                   p(ip6s_pulldown, "\t%qu call%s to m_pulldown\n");
                   p(ip6s_pulldown_alloc,
                       "\t%qu mbuf allocation%s in m_pulldown\n");
                   if (ip6stat.ip6s_pulldown_copy != 1) {
                           p1(ip6s_pulldown_copy,
                               "\t%qu mbuf copies in m_pulldown\n");
                   } else {
                           p1(ip6s_pulldown_copy,
                               "\t%qu mbuf copy in m_pulldown\n");
                   }
                   p(ip6s_pullup, "\t%qu call%s to m_pullup\n");
                   p(ip6s_pullup_alloc, "\t%qu mbuf allocation%s in m_pullup\n");
                   if (ip6stat.ip6s_pullup_copy != 1) {
                           p1(ip6s_pullup_copy, "\t%qu mbuf copies in m_pullup\n");
                   } else {
                           p1(ip6s_pullup_copy, "\t%qu mbuf copy in m_pullup\n");
                   }
                   p(ip6s_pullup_fail, "\t%qu failure%s in m_pullup\n");
                   p(ip6s_pullup2, "\t%qu call%s to m_pullup2\n");
                   p(ip6s_pullup2_alloc, "\t%qu mbuf allocation%s in m_pullup2\n");
                   if (ip6stat.ip6s_pullup2_copy != 1) {
                           p1(ip6s_pullup2_copy,
                               "\t%qu mbuf copies in m_pullup2\n");
                   } else {
                           p1(ip6s_pullup2_copy, "\t%qu mbuf copy in m_pullup2\n");
                   }
                   p(ip6s_pullup2_fail, "\t%qu failure%s in m_pullup2\n");
           }
   
           /* for debugging source address selection */
   #define PRINT_SCOPESTAT(s,i) do {\
                   switch(i) { /* XXX hardcoding in each case */\
                   case 1:\
                           p(s, "\t\t%qu node-local%s\n");\
                           break;\
                   case 2:\
                           p(s,"\t\t%qu link-local%s\n");\
                           break;\
                   case 5:\
                           p(s,"\t\t%qu site-local%s\n");\
                           break;\
                   case 14:\
                           p(s,"\t\t%qu global%s\n");\
                           break;\
                   default:\
                           printf("\t\t%qu addresses scope=%x\n",\
                                  ip6stat.s, i);\
                   }\
           } while(0);
   
           p(ip6s_sources_none,
             "\t%qu failure%s of source address selection\n");
           for (first = 1, i = 0; i < 16; i++) {
                   if (ip6stat.ip6s_sources_sameif[i]) {
                           if (first) {
                                   printf("\tsource addresses on an outgoing I/F\n");
                                   first = 0;
                           }
                           PRINT_SCOPESTAT(ip6s_sources_sameif[i], i);
                   }
           }
           for (first = 1, i = 0; i < 16; i++) {
                   if (ip6stat.ip6s_sources_otherif[i]) {
                           if (first) {
                                   printf("\tsource addresses on a non-outgoing I/F\n");
                                   first = 0;
                           }
                           PRINT_SCOPESTAT(ip6s_sources_otherif[i], i);
                   }
           }
           for (first = 1, i = 0; i < 16; i++) {
                   if (ip6stat.ip6s_sources_samescope[i]) {
                           if (first) {
                                   printf("\tsource addresses of same scope\n");
                                   first = 0;
                           }
                           PRINT_SCOPESTAT(ip6s_sources_samescope[i], i);
                   }
           }
           for (first = 1, i = 0; i < 16; i++) {
                   if (ip6stat.ip6s_sources_otherscope[i]) {
                           if (first) {
                                   printf("\tsource addresses of a different scope\n");
                                   first = 0;
                           }
                           PRINT_SCOPESTAT(ip6s_sources_otherscope[i], i);
                   }
           }
           for (first = 1, i = 0; i < 16; i++) {
                   if (ip6stat.ip6s_sources_deprecated[i]) {
                           if (first) {
                                   printf("\tdeprecated source addresses\n");
                                   first = 0;
                           }
                           PRINT_SCOPESTAT(ip6s_sources_deprecated[i], i);
                   }
           }
 #undef p  #undef p
 #undef p1  #undef p1
 }  }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5