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

Diff for /src/usr.bin/netstat/route.c between version 1.45 and 1.46

version 1.45, 2002/02/16 21:27:50 version 1.46, 2002/05/27 01:50:36
Line 254 
Line 254 
         if (Aflag)          if (Aflag)
                 printf("%-*.*s ", PLEN, PLEN, "Address");                  printf("%-*.*s ", PLEN, PLEN, "Address");
         printf("%-*.*s %-*.*s %-6.6s  %6.6s  %6.6s %6.6s  %s\n",          printf("%-*.*s %-*.*s %-6.6s  %6.6s  %6.6s %6.6s  %s\n",
                 WID_DST(af), WID_DST(af), "Destination",              WID_DST(af), WID_DST(af), "Destination",
                 WID_GW(af), WID_GW(af), "Gateway",              WID_GW(af), WID_GW(af), "Gateway",
                 "Flags", "Refs", "Use", "Mtu", "Interface");              "Flags", "Refs", "Use", "Mtu", "Interface");
 }  }
   
 /*  /*
Line 343 
Line 343 
                 kget(rm, rmask);                  kget(rm, rmask);
                 snprintf(nbuf, sizeof nbuf, " %d refs, ", rmask.rm_refs);                  snprintf(nbuf, sizeof nbuf, " %d refs, ", rmask.rm_refs);
                 printf(" mk = %16p {(%d),%s",                  printf(" mk = %16p {(%d),%s",
                         rm, -1 - rmask.rm_b, rmask.rm_refs ? nbuf : " ");                      rm, -1 - rmask.rm_b, rmask.rm_refs ? nbuf : " ");
                 p_sockaddr(kgetsa((struct sockaddr *)rmask.rm_mask), 0, 0, -1);                  p_sockaddr(kgetsa((struct sockaddr *)rmask.rm_mask), 0, 0, -1);
                 putchar('}');                  putchar('}');
                 if ((rm = rmask.rm_mklist))                  if ((rm = rmask.rm_mklist))
Line 441 
Line 441 
                 struct sockaddr_in *msin = (struct sockaddr_in *)mask;                  struct sockaddr_in *msin = (struct sockaddr_in *)mask;
   
                 cp = (sin->sin_addr.s_addr == 0) ? "default" :                  cp = (sin->sin_addr.s_addr == 0) ? "default" :
                       ((flags & RTF_HOST) || mask == NULL ?                      ((flags & RTF_HOST) || mask == NULL ?
                         routename(sin->sin_addr.s_addr) :                      routename(sin->sin_addr.s_addr) :
                         netname(sin->sin_addr.s_addr, msin->sin_addr.s_addr));                      netname(sin->sin_addr.s_addr, msin->sin_addr.s_addr));
   
                 break;                  break;
             }              }
Line 461 
Line 461 
                  */                   */
                 if (IN6_IS_ADDR_LINKLOCAL(in6) ||                  if (IN6_IS_ADDR_LINKLOCAL(in6) ||
                     IN6_IS_ADDR_MC_LINKLOCAL(in6)) {                      IN6_IS_ADDR_MC_LINKLOCAL(in6)) {
                     /* XXX: override is ok? */                          /* XXX: override is ok? */
                     sa6->sin6_scope_id = (u_int32_t)ntohs(*(u_short *)&in6->s6_addr[2]);                          sa6->sin6_scope_id = (u_int32_t)ntohs(*(u_short *)
                     *(u_short *)&in6->s6_addr[2] = 0;                              &in6->s6_addr[2]);
                           *(u_short *)&in6->s6_addr[2] = 0;
                 }                  }
 #endif  #endif
   
                 if (flags & RTF_HOST)                  if (flags & RTF_HOST)
                         cp = routename6(sa6);                          cp = routename6(sa6);
                 else if (mask) {                  else if (mask) {
                         cp = netname6(sa6,                          cp = netname6(sa6,
                                 &((struct sockaddr_in6 *)mask)->sin6_addr);                              &((struct sockaddr_in6 *)mask)->sin6_addr);
                 } else                  } else
                         cp = netname6(sa6, NULL);                          cp = netname6(sa6, NULL);
                 break;                  break;
Line 508 
Line 508 
                                     "%s%x", cplim, *lla);                                      "%s%x", cplim, *lla);
                                 cplim = ":";                                  cplim = ":";
                                 if (n == -1)    /* What else to do ? */                                  if (n == -1)    /* What else to do ? */
                                   continue;                                          continue;
                                 if (n >= workbuf + sizeof (workbuf) - cp)                                  if (n >= workbuf + sizeof (workbuf) - cp)
                                         n = workbuf + sizeof (workbuf) - cp - 1;                                          n = workbuf + sizeof (workbuf) - cp - 1;
                                 cp += n;                                  cp += n;
Line 593 
Line 593 
         struct sockaddr_storage sock1, sock2;          struct sockaddr_storage sock1, sock2;
         struct sockaddr *sa = (struct sockaddr *)&sock1;          struct sockaddr *sa = (struct sockaddr *)&sock1;
         struct sockaddr *mask = (struct sockaddr *)&sock2;          struct sockaddr *mask = (struct sockaddr *)&sock2;
   
         bcopy(kgetsa(rt_key(rt)), sa, sizeof(struct sockaddr));          bcopy(kgetsa(rt_key(rt)), sa, sizeof(struct sockaddr));
         if (sa->sa_len > sizeof(struct sockaddr))          if (sa->sa_len > sizeof(struct sockaddr))
                 bcopy(kgetsa(rt_key(rt)), sa, sa->sa_len);                  bcopy(kgetsa(rt_key(rt)), sa, sa->sa_len);
Line 609 
Line 609 
                         bcopy(kgetsa(rt_mask(rt)), mask, sa->sa_len);                          bcopy(kgetsa(rt_mask(rt)), mask, sa->sa_len);
         } else          } else
                 mask = 0;                  mask = 0;
   
         p_sockaddr(sa, mask, rt->rt_flags, WID_DST(sa->sa_family));          p_sockaddr(sa, mask, rt->rt_flags, WID_DST(sa->sa_family));
         p_sockaddr(kgetsa(rt->rt_gateway), 0, RTF_HOST, WID_GW(sa->sa_family));          p_sockaddr(kgetsa(rt->rt_gateway), 0, RTF_HOST, WID_GW(sa->sa_family));
         p_flags(rt->rt_flags, "%-6.6s ");          p_flags(rt->rt_flags, "%-6.6s ");
Line 630 
Line 630 
         putchar('\n');          putchar('\n');
         if (vflag) {          if (vflag) {
                 printf("\texpire   %10lu%c  recvpipe %10ld%c  "                  printf("\texpire   %10lu%c  recvpipe %10ld%c  "
                        "sendpipe %10ld%c\n",                      "sendpipe %10ld%c\n",
                         rt->rt_rmx.rmx_expire,                      rt->rt_rmx.rmx_expire,
                         (rt->rt_rmx.rmx_locks & RTV_EXPIRE) ? 'L' : ' ',                      (rt->rt_rmx.rmx_locks & RTV_EXPIRE) ? 'L' : ' ',
                         rt->rt_rmx.rmx_recvpipe,                      rt->rt_rmx.rmx_recvpipe,
                         (rt->rt_rmx.rmx_locks & RTV_RPIPE) ? 'L' : ' ',                      (rt->rt_rmx.rmx_locks & RTV_RPIPE) ? 'L' : ' ',
                         rt->rt_rmx.rmx_sendpipe,                      rt->rt_rmx.rmx_sendpipe,
                         (rt->rt_rmx.rmx_locks & RTV_SPIPE) ? 'L' : ' ');                      (rt->rt_rmx.rmx_locks & RTV_SPIPE) ? 'L' : ' ');
                 printf("\tssthresh %10lu%c  rtt      %10ld%c  "                  printf("\tssthresh %10lu%c  rtt      %10ld%c  "
                        "rttvar   %10ld%c\n",                      "rttvar   %10ld%c\n",
                         rt->rt_rmx.rmx_ssthresh,                      rt->rt_rmx.rmx_ssthresh,
                         (rt->rt_rmx.rmx_locks & RTV_SSTHRESH) ? 'L' : ' ',                      (rt->rt_rmx.rmx_locks & RTV_SSTHRESH) ? 'L' : ' ',
                         rt->rt_rmx.rmx_rtt,                      rt->rt_rmx.rmx_rtt,
                         (rt->rt_rmx.rmx_locks & RTV_RTT) ? 'L' : ' ',                      (rt->rt_rmx.rmx_locks & RTV_RTT) ? 'L' : ' ',
                         rt->rt_rmx.rmx_rttvar,                      rt->rt_rmx.rmx_rttvar,
                         (rt->rt_rmx.rmx_locks & RTV_RTTVAR) ? 'L' : ' ');                      (rt->rt_rmx.rmx_locks & RTV_RTTVAR) ? 'L' : ' ');
         }          }
 }  }
   
 char *  char *
Line 662 
Line 662 
                 first = 0;                  first = 0;
                 if (gethostname(domain, sizeof domain) == 0 &&                  if (gethostname(domain, sizeof domain) == 0 &&
                     (cp = strchr(domain, '.')))                      (cp = strchr(domain, '.')))
                         (void) strcpy(domain, cp + 1);                          (void) strlcpy(domain, cp + 1, sizeof domain);
                 else                  else
                         domain[0] = 0;                          domain[0] = '\0';
         }          }
         cp = 0;          cp = 0;
         if (!nflag) {          if (!nflag) {
                 hp = gethostbyaddr((char *)&in, sizeof (struct in_addr),                  hp = gethostbyaddr((char *)&in, sizeof (struct in_addr),
                         AF_INET);                      AF_INET);
                 if (hp) {                  if (hp) {
                         if ((cp = strchr(hp->h_name, '.')) &&                          if ((cp = strchr(hp->h_name, '.')) &&
                             !strcmp(cp + 1, domain))                              !strcmp(cp + 1, domain))
Line 678 
Line 678 
                 }                  }
         }          }
         if (cp) {          if (cp) {
                 strncpy(line, cp, sizeof(line) - 1);                  strlcpy(line, cp, sizeof(line));
                 line[sizeof(line) - 1] = '\0';  
         } else {          } else {
 #define C(x)    ((x) & 0xff)  #define C(x)    ((x) & 0xff)
                 in = ntohl(in);                  in = ntohl(in);
Line 710 
Line 709 
         }          }
         mbits = mask ? 33 - ffs(mask) : 0;          mbits = mask ? 33 - ffs(mask) : 0;
         if (cp) {          if (cp) {
                 strncpy(line, cp, sizeof(line) - 1);                  strlcpy(line, cp, sizeof(line));
                 line[sizeof(line) - 1] = '\0';  
         } else if (mbits < 9)          } else if (mbits < 9)
                 snprintf(line, sizeof line, "%u/%d", C(in >> 24), mbits);                  snprintf(line, sizeof line, "%u/%d", C(in >> 24), mbits);
         else if (mbits < 17)          else if (mbits < 17)
Line 722 
Line 720 
                     C(in >> 24), C(in >> 16), C(in >> 8), mbits);                      C(in >> 24), C(in >> 16), C(in >> 8), mbits);
         else          else
                 snprintf(line, sizeof line, "%u.%u.%u.%u/%d", C(in >> 24),                  snprintf(line, sizeof line, "%u.%u.%u.%u/%d", C(in >> 24),
                         C(in >> 16), C(in >> 8), C(in), mbits);                      C(in >> 16), C(in >> 8), C(in), mbits);
         return (line);          return (line);
 }  }
   
Line 747 
Line 745 
         int error;          int error;
   
         sin6 = *sa6;          sin6 = *sa6;
   
         masklen = 0;          masklen = 0;
         lim = (u_char *)(mask + 1);          lim = (u_char *)(mask + 1);
         i = 0;          i = 0;
Line 836 
Line 834 
         const int niflag = NI_NUMERICHOST;          const int niflag = NI_NUMERICHOST;
 #endif  #endif
         if (getnameinfo((struct sockaddr *)sa6, sa6->sin6_len,          if (getnameinfo((struct sockaddr *)sa6, sa6->sin6_len,
                         line, sizeof(line), NULL, 0, niflag) != 0)              line, sizeof(line), NULL, 0, niflag) != 0)
                 strcpy(line, "");                  strlcpy(line, "", sizeof line);
         return line;          return line;
 }  }
 #endif /*INET6*/  #endif /*INET6*/
Line 858 
Line 856 
         kread(off, (char *)&rtstat, sizeof (rtstat));          kread(off, (char *)&rtstat, sizeof (rtstat));
         printf("routing:\n");          printf("routing:\n");
         printf("\t%u bad routing redirect%s\n",          printf("\t%u bad routing redirect%s\n",
                 rtstat.rts_badredirect, plural(rtstat.rts_badredirect));              rtstat.rts_badredirect, plural(rtstat.rts_badredirect));
         printf("\t%u dynamically created route%s\n",          printf("\t%u dynamically created route%s\n",
                 rtstat.rts_dynamic, plural(rtstat.rts_dynamic));              rtstat.rts_dynamic, plural(rtstat.rts_dynamic));
         printf("\t%u new gateway%s due to redirects\n",          printf("\t%u new gateway%s due to redirects\n",
                 rtstat.rts_newgateway, plural(rtstat.rts_newgateway));              rtstat.rts_newgateway, plural(rtstat.rts_newgateway));
         printf("\t%u destination%s found unreachable\n",          printf("\t%u destination%s found unreachable\n",
                 rtstat.rts_unreach, plural(rtstat.rts_unreach));              rtstat.rts_unreach, plural(rtstat.rts_unreach));
         printf("\t%u use%s of a wildcard route\n",          printf("\t%u use%s of a wildcard route\n",
                 rtstat.rts_wildcard, plural(rtstat.rts_wildcard));              rtstat.rts_wildcard, plural(rtstat.rts_wildcard));
 }  }
   
 short ns_nullh[] = {0,0,0};  short ns_nullh[] = {0,0,0};
Line 905 
Line 903 
         } else {          } else {
                 q = work.x_host.c_host;                  q = work.x_host.c_host;
                 snprintf(chost, sizeof chost, "%02x%02x%02x%02x%02x%02xH",                  snprintf(chost, sizeof chost, "%02x%02x%02x%02x%02x%02xH",
                         q[0], q[1], q[2], q[3], q[4], q[5]);                      q[0], q[1], q[2], q[3], q[4], q[5]);
                 for (p = chost; *p == '0' && p < chost + 12; p++)                  for (p = chost; *p == '0' && p < chost + 12; p++)
                         continue;                          continue;
                 host = p;                  host = p;
Line 935 
Line 933 
         work.sns_addr.x_net = ns_zeronet;          work.sns_addr.x_net = ns_zeronet;
   
         p = ns_print((struct sockaddr *)&work);          p = ns_print((struct sockaddr *)&work);
         if (strncmp("0H.", p, 3) == 0) p += 3;          if (strncmp("0H.", p, 3) == 0)
                   p += 3;
         return(p);          return(p);
 }  }
   
Line 1002 
Line 1001 
         work.sipx_addr.ipx_net = ipx_zeronet;          work.sipx_addr.ipx_net = ipx_zeronet;
   
         p = ipx_print((struct sockaddr *)&work);          p = ipx_print((struct sockaddr *)&work);
         if (strncmp("0H.", p, 3) == 0) p += 3;          if (strncmp("0H.", p, 3) == 0)
                   p += 3;
         return(p);          return(p);
 }  }
   
Line 1022 
Line 1022 
         bcopy(kgetsa(rt_mask(rt)), &sen2, sizeof(sen2));          bcopy(kgetsa(rt_mask(rt)), &sen2, sizeof(sen2));
         bcopy(kgetsa(rt->rt_gateway), &sen3, sizeof(sen3));          bcopy(kgetsa(rt->rt_gateway), &sen3, sizeof(sen3));
   
         if (sen1.sen_type == SENT_IP4)          if (sen1.sen_type == SENT_IP4) {
         {                  printf("%-18s %-5u ", netname(sen1.sen_ip_src.s_addr,
             printf("%-18s %-5u ", netname(sen1.sen_ip_src.s_addr,                      sen2.sen_ip_src.s_addr), ntohs(sen1.sen_sport));
                                           sen2.sen_ip_src.s_addr),                  printf("%-18s %-5u %-5u ", netname(sen1.sen_ip_dst.s_addr,
                    ntohs(sen1.sen_sport));                      sen2.sen_ip_dst.s_addr),
                       ntohs(sen1.sen_dport), sen1.sen_proto);
             printf("%-18s %-5u %-5u ", netname(sen1.sen_ip_dst.s_addr,  
                                                sen2.sen_ip_dst.s_addr),  
                    ntohs(sen1.sen_dport), sen1.sen_proto);  
         }          }
   
 #ifdef INET6  #ifdef INET6
         if (sen1.sen_type == SENT_IP6)          if (sen1.sen_type == SENT_IP6) {
         {                  bzero(&s61, sizeof(s61));
             bzero(&s61, sizeof(s61));                  bzero(&s62, sizeof(s62));
             bzero(&s62, sizeof(s62));                  s61.sin6_family = s62.sin6_family = AF_INET6;
             s61.sin6_family = s62.sin6_family = AF_INET6;                  s61.sin6_len = s62.sin6_len = sizeof(s61);
             s61.sin6_len = s62.sin6_len = sizeof(s61);                  bcopy(&sen1.sen_ip6_src, &s61.sin6_addr, sizeof(struct in6_addr));
             bcopy(&sen1.sen_ip6_src, &s61.sin6_addr, sizeof(struct in6_addr));                  bcopy(&sen2.sen_ip6_src, &s62.sin6_addr, sizeof(struct in6_addr));
             bcopy(&sen2.sen_ip6_src, &s62.sin6_addr, sizeof(struct in6_addr));  
   
             printf("%-42s %-5u ", netname6(&s61, &s62.sin6_addr),                  printf("%-42s %-5u ", netname6(&s61, &s62.sin6_addr),
                    ntohs(sen1.sen_ip6_sport));                      ntohs(sen1.sen_ip6_sport));
   
             bzero(&s61, sizeof(s61));                  bzero(&s61, sizeof(s61));
             bzero(&s62, sizeof(s62));                  bzero(&s62, sizeof(s62));
             s61.sin6_family = s62.sin6_family = AF_INET6;                  s61.sin6_family = s62.sin6_family = AF_INET6;
             s61.sin6_len = s62.sin6_len = sizeof(s61);                  s61.sin6_len = s62.sin6_len = sizeof(s61);
             bcopy(&sen1.sen_ip6_dst, &s61.sin6_addr, sizeof(struct in6_addr));                  bcopy(&sen1.sen_ip6_dst, &s61.sin6_addr, sizeof(struct in6_addr));
             bcopy(&sen2.sen_ip6_dst, &s62.sin6_addr, sizeof(struct in6_addr));                  bcopy(&sen2.sen_ip6_dst, &s62.sin6_addr, sizeof(struct in6_addr));
   
             printf("%-42s %-5u %-5u ", netname6(&s61, &s62.sin6_addr),                  printf("%-42s %-5u %-5u ", netname6(&s61, &s62.sin6_addr),
                    ntohs(sen1.sen_ip6_dport), sen1.sen_ip6_proto);                      ntohs(sen1.sen_ip6_dport), sen1.sen_ip6_proto);
         }          }
 #endif /* INET6 */  #endif /* INET6 */
   
         if (sen3.sen_type == SENT_IPSP)          if (sen3.sen_type == SENT_IPSP) {
         {                  char hostn[NI_MAXHOST];
             char hostn[NI_MAXHOST];  
   
             kget(sen3.sen_ipsp, ipo);                  kget(sen3.sen_ipsp, ipo);
   
             getnameinfo(&ipo.ipo_dst.sa, ipo.ipo_dst.sa.sa_len,                  getnameinfo(&ipo.ipo_dst.sa, ipo.ipo_dst.sa.sa_len,
                         hostn, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);                      hostn, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
             printf("%s", hostn);                  printf("%s", hostn);
                   printf("/%-u", ipo.ipo_sproto);
   
             printf("/%-u", ipo.ipo_sproto);                  switch (ipo.ipo_type) {
   
             switch (ipo.ipo_type)  
             {  
                 case IPSP_IPSEC_REQUIRE:                  case IPSP_IPSEC_REQUIRE:
                     printf("/require");                          printf("/require");
                     break;                          break;
   
                 case IPSP_IPSEC_ACQUIRE:                  case IPSP_IPSEC_ACQUIRE:
                     printf("/acquire");                          printf("/acquire");
                     break;                          break;
   
                 case IPSP_IPSEC_USE:                  case IPSP_IPSEC_USE:
                     printf("/use");                          printf("/use");
                     break;                          break;
   
                 case IPSP_IPSEC_DONTACQ:                  case IPSP_IPSEC_DONTACQ:
                     printf("/dontacq");                          printf("/dontacq");
                     break;                          break;
   
                 case IPSP_PERMIT:                  case IPSP_PERMIT:
                     printf("/permit");                          printf("/permit");
                     break;                          break;
   
                 case IPSP_DENY:                  case IPSP_DENY:
                     printf("/deny");                          printf("/deny");
                     break;                          break;
   
                 default:                  default:
                     printf("/<unknown type!>");                          printf("/<unknown type!>");
             }                          break;
                   }
   
             if ((ipo.ipo_addr.sen_type == SENT_IP4 &&                  if ((ipo.ipo_addr.sen_type == SENT_IP4 &&
                  ipo.ipo_addr.sen_direction == IPSP_DIRECTION_IN) ||                      ipo.ipo_addr.sen_direction == IPSP_DIRECTION_IN) ||
                 (ipo.ipo_addr.sen_type == SENT_IP6 &&                      (ipo.ipo_addr.sen_type == SENT_IP6 &&
                  ipo.ipo_addr.sen_ip6_direction == IPSP_DIRECTION_IN))                      ipo.ipo_addr.sen_ip6_direction == IPSP_DIRECTION_IN))
               printf("/in\n");                          printf("/in\n");
             else                  else if ((ipo.ipo_addr.sen_type == SENT_IP4 &&
               if ((ipo.ipo_addr.sen_type == SENT_IP4 &&                      ipo.ipo_addr.sen_direction == IPSP_DIRECTION_OUT) ||
                    ipo.ipo_addr.sen_direction == IPSP_DIRECTION_OUT) ||                      (ipo.ipo_addr.sen_type == SENT_IP6 &&
                   (ipo.ipo_addr.sen_type == SENT_IP6 &&                      ipo.ipo_addr.sen_ip6_direction == IPSP_DIRECTION_OUT))
                    ipo.ipo_addr.sen_ip6_direction == IPSP_DIRECTION_OUT))                          printf("/out\n");
                 printf("/out\n");                  else
               else                          printf("/<unknown>\n");
                 printf("/<unknown>\n");  
         }          }
 }  }
   
Line 1121 
Line 1108 
         char *p0;          char *p0;
 {  {
         char *p = p0;          char *p = p0;
         for (; *p; p++) switch (*p) {  
   
         case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':          for (; *p; p++)
                 *p += ('A' - 'a');                  switch (*p) {
                   case 'a':
                   case 'b':
                   case 'c':
                   case 'd':
                   case 'e':
                   case 'f':
                           *p += ('A' - 'a');
                           break;
         }          }
 }  }

Legend:
Removed from v.1.45  
changed lines
  Added in v.1.46