Author: hrs
Date: Sat Jul 20 15:58:43 2013
New Revision: 253503
URL: http://svnweb.freebsd.org/changeset/base/253503

Log:
  Show "default" for the zero-filled address consistently when nflag == 0.

Modified:
  head/sbin/route/route.c

Modified: head/sbin/route/route.c
==============================================================================
--- head/sbin/route/route.c     Sat Jul 20 15:23:42 2013        (r253502)
+++ head/sbin/route/route.c     Sat Jul 20 15:58:43 2013        (r253503)
@@ -511,10 +511,8 @@ routename(struct sockaddr *sa)
                        domain[0] = '\0';
        }
 
-       if (sa->sa_len == 0) {
-               strcpy(line, "default");
-               return (line);
-       }
+       if (sa->sa_len == 0 && nflag == 0)
+               return ("default");
        switch (sa->sa_family) {
 #ifdef INET
        case AF_INET:
@@ -523,9 +521,9 @@ routename(struct sockaddr *sa)
 
                in = ((struct sockaddr_in *)(void *)sa)->sin_addr;
                cp = NULL;
-               if (in.s_addr == INADDR_ANY || sa->sa_len < 4)
-                       cp = "default";
-               if (cp == NULL && !nflag) {
+               if (in.s_addr == INADDR_ANY && nflag == 0)
+                       return ("default");
+               if (nflag != 0) {
                        hp = gethostbyaddr((char *)&in, sizeof (struct in_addr),
                                AF_INET);
                        if (hp != NULL) {
@@ -552,6 +550,10 @@ routename(struct sockaddr *sa)
                struct sockaddr_in6 sin6; /* use static var for safety */
                int niflags = 0;
 
+               /* Check if the address is ::.  If true, use "default". */
+               if (nflag == 0 &&
+                   IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *)(void 
*)sa)->sin6_addr))
+                       return("default");
                memset(&sin6, 0, sizeof(sin6));
                memcpy(&sin6, sa, sa->sa_len);
                sin6.sin6_len = sizeof(struct sockaddr_in6);
@@ -1712,13 +1714,8 @@ print_getmsg(struct rt_msghdr *rtm, int 
                mask->sa_family = dst->sa_family;       /* XXX */
        if (dst)
                (void)printf("destination: %s\n", routename(dst));
-       if (mask) {
-               int savenflag = nflag;
-
-               nflag = 1;
+       if (mask)
                (void)printf("       mask: %s\n", routename(mask));
-               nflag = savenflag;
-       }
        if (gate && rtm->rtm_flags & RTF_GATEWAY)
                (void)printf("    gateway: %s\n", routename(gate));
        if (fib >= 0)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to