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);