This is a just a cosmetic fix.  Currently the netmask of flushed routes
is not printed correctly.  The diff below fixes that.

ok?

Index: route.c
===================================================================
RCS file: /cvs/src/sbin/route/route.c,v
retrieving revision 1.192
diff -u -p -r1.192 route.c
--- route.c     24 Sep 2016 19:36:49 -0000      1.192
+++ route.c     9 Dec 2016 13:20:04 -0000
@@ -385,13 +385,17 @@ flushroutes(int argc, char **argv)
                if (verbose)
                        print_rtmsg(rtm, rlen);
                else {
+                       struct sockaddr *mask, *rti_info[RTAX_MAX];
+
                        sa = (struct sockaddr *)(next + rtm->rtm_hdrlen);
-                       printf("%-20.20s ", rtm->rtm_flags & RTF_HOST ?
-                           routename(sa) : netname(sa, NULL)); /* XXX extract
-                                                                  netmask */
-                       sa = (struct sockaddr *)
-                           (ROUNDUP(sa->sa_len) + (char *)sa);
-                       printf("%-20.20s ", routename(sa));
+
+                       get_rtaddrs(rtm->rtm_addrs, sa, rti_info);
+
+                       sa = rti_info[RTAX_DST];
+                       mask = rti_info[RTAX_NETMASK];
+
+                       p_sockaddr(sa, mask, rtm->rtm_flags, 20);
+                       p_sockaddr(rti_info[RTAX_GATEWAY], NULL, RTF_HOST, 20);
                        printf("done\n");
                }
        }
Index: show.c
===================================================================
RCS file: /cvs/src/sbin/route/show.c,v
retrieving revision 1.107
diff -u -p -r1.107 show.c
--- show.c      5 Sep 2016 14:23:38 -0000       1.107
+++ show.c      9 Dec 2016 13:19:44 -0000
@@ -100,7 +100,6 @@ int  WID_DST(int);
 void    pr_rthdr(int);
 void    p_rtentry(struct rt_msghdr *);
 void    pr_family(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 *);
 char   *routename4(in_addr_t);
@@ -224,7 +223,7 @@ pr_rthdr(int af)
        }
 }
 
-static void
+void
 get_rtaddrs(int addrs, struct sockaddr *sa, struct sockaddr **rti_info)
 {
        int     i;
Index: show.h
===================================================================
RCS file: /cvs/src/sbin/route/show.h,v
retrieving revision 1.11
diff -u -p -r1.11 show.h
--- show.h      18 Jul 2015 00:05:02 -0000      1.11
+++ show.h      9 Dec 2016 13:19:55 -0000
@@ -28,7 +28,9 @@ union sockunion {
        struct sockaddr_mpls    smpls;
 };
 
+void    get_rtaddrs(int, struct sockaddr *, struct sockaddr **);
 void    p_rttables(int, u_int, int, char);
+void    p_sockaddr(struct sockaddr *, struct sockaddr *, int, int);
 char   *routename(struct sockaddr *);
 char   *netname(struct sockaddr *, struct sockaddr *);
 char   *mpls_op(u_int32_t);

Reply via email to