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

Diff for /src/usr.bin/netstat/show.c between version 1.16 and 1.17

version 1.16, 2008/12/15 21:18:37 version 1.17, 2009/01/08 12:52:36
Line 61 
Line 61 
 char    *any_ntoa(const struct sockaddr *);  char    *any_ntoa(const struct sockaddr *);
 char    *link_print(struct sockaddr *);  char    *link_print(struct sockaddr *);
 char    *label_print_op(u_int32_t);  char    *label_print_op(u_int32_t);
 char    *label_print(struct sockaddr *);  char    *label_print(struct sockaddr *, struct sockaddr *);
   
 #define ROUNDUP(a) \  #define ROUNDUP(a) \
         ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))          ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
Line 105 
Line 105 
 void     p_protocol(struct sadb_protocol *, struct sockaddr *, struct  void     p_protocol(struct sadb_protocol *, struct sockaddr *, struct
              sadb_protocol *, int);               sadb_protocol *, int);
 void     p_sockaddr(struct sockaddr *, struct sockaddr *, int, int);  void     p_sockaddr(struct sockaddr *, struct sockaddr *, int, int);
   void     p_sockaddr_mpls(struct sockaddr *, struct sockaddr *, int, int);
 void     p_flags(int, char *);  void     p_flags(int, char *);
 char    *routename4(in_addr_t);  char    *routename4(in_addr_t);
 char    *routename6(struct sockaddr_in6 *);  char    *routename6(struct sockaddr_in6 *);
Line 295 
Line 296 
                 return;                  return;
   
         p_sockaddr(sa, mask, rtm->rtm_flags, WID_DST(sa->sa_family));          p_sockaddr(sa, mask, rtm->rtm_flags, WID_DST(sa->sa_family));
           p_sockaddr_mpls(sa, rti_info[RTAX_SRC], rtm->rtm_flags,
               WID_DST(sa->sa_family));
   
         p_sockaddr(rti_info[RTAX_GATEWAY], NULL, RTF_HOST,          p_sockaddr(rti_info[RTAX_GATEWAY], NULL, RTF_HOST,
             WID_GW(sa->sa_family));              WID_GW(sa->sa_family));
         p_flags(rtm->rtm_flags, "%-6.6s ");          p_flags(rtm->rtm_flags, "%-6.6s ");
Line 524 
Line 528 
                 break;                  break;
             }              }
         case AF_MPLS:          case AF_MPLS:
                 if (flags & RTF_HOST || mask == NULL)                  return;
                         cp = routename(sa);  
                 else  
                         cp = netname(sa, mask);  
   
                 snprintf(cp, MAXHOSTNAMELEN, "%s %s", cp,  
                     label_print_op(flags));  
   
                 break;  
         default:          default:
                 if ((flags & RTF_HOST) || mask == NULL)                  if ((flags & RTF_HOST) || mask == NULL)
                         cp = routename(sa);                          cp = routename(sa);
Line 550 
Line 546 
         }          }
 }  }
   
   static char line[MAXHOSTNAMELEN];
   static char domain[MAXHOSTNAMELEN];
   
 void  void
   p_sockaddr_mpls(struct sockaddr *in, struct sockaddr *out, int flags, int width)
   {
           char *cp;
   
           if (in->sa_family != AF_MPLS)
                   return;
   
           if (flags & MPLS_OP_POP)
                   cp = label_print(in, NULL);
           else
                   cp = label_print(in, out);
   
           snprintf(cp, MAXHOSTNAMELEN, "%s %s", cp,
               label_print_op(flags));
   
           printf("%-*s ", width, cp);
   }
   
   void
 p_flags(int f, char *format)  p_flags(int f, char *format)
 {  {
         char name[33], *flags;          char name[33], *flags;
Line 563 
Line 581 
         printf(format, name);          printf(format, name);
 }  }
   
 static char line[MAXHOSTNAMELEN];  
 static char domain[MAXHOSTNAMELEN];  
   
 char *  char *
 routename(struct sockaddr *sa)  routename(struct sockaddr *sa)
 {  {
Line 616 
Line 631 
         case AF_LINK:          case AF_LINK:
                 return (link_print(sa));                  return (link_print(sa));
         case AF_MPLS:          case AF_MPLS:
                 return (label_print(sa));                  return (label_print(sa, NULL));
         case AF_UNSPEC:          case AF_UNSPEC:
                 if (sa->sa_len == sizeof(struct sockaddr_rtlabel)) {                  if (sa->sa_len == sizeof(struct sockaddr_rtlabel)) {
                         static char name[RTLABEL_LEN];                          static char name[RTLABEL_LEN];
Line 824 
Line 839 
         case AF_LINK:          case AF_LINK:
                 return (link_print(sa));                  return (link_print(sa));
         case AF_MPLS:          case AF_MPLS:
                 return (label_print(sa));                  return (label_print(sa, NULL));
         default:          default:
                 snprintf(line, sizeof(line), "af %d: %s",                  snprintf(line, sizeof(line), "af %d: %s",
                     sa->sa_family, any_ntoa(sa));                      sa->sa_family, any_ntoa(sa));
Line 889 
Line 904 
 }  }
   
 char *  char *
 label_print(struct sockaddr *sa)  label_print(struct sockaddr *in, struct sockaddr *out)
 {  {
         struct sockaddr_mpls    *smpls = (struct sockaddr_mpls *)sa;          struct sockaddr_mpls    *insmpls = (struct sockaddr_mpls *)in;
           struct sockaddr_mpls    *outsmpls = (struct sockaddr_mpls *)out;
         char                     ifname_in[IF_NAMESIZE];          char                     ifname_in[IF_NAMESIZE];
         char                     ifname_out[IF_NAMESIZE];          char                     ifname_out[IF_NAMESIZE];
         char                    *in_label;          char                    *in_label;
         char                    *out_label;          char                    *out_label;
   
         if (asprintf(&in_label, "%u",          if (asprintf(&in_label, "%u",
             ntohl(smpls->smpls_in_label) >> MPLS_LABEL_OFFSET) == -1)              ntohl(insmpls->smpls_label) >> MPLS_LABEL_OFFSET) == -1)
                 err(1, NULL);                  err(1, NULL);
   
         if (asprintf(&out_label, "%u",          if (outsmpls) {
             ntohl(smpls->smpls_out_label) >> MPLS_LABEL_OFFSET) == -1)                  if (asprintf(&out_label, "%u",
                 err(1, NULL);                      ntohl(outsmpls->smpls_label) >> MPLS_LABEL_OFFSET) == -1)
                           err(1, NULL);
           } else {
                   if (asprintf(&out_label, "-") == -1)
                           err(1, NULL);
           }
   
         (void)snprintf(line, sizeof(line), "%-16s %-10s", in_label,          (void)snprintf(line, sizeof(line), "%-16s %-10s", in_label,
             out_label);              out_label);

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17