On Mon, Dec 12, 2016 at 10:53:42AM +0100, Martin Pieuchot wrote:
> This is a just a cosmetic fix. Currently the netmask of flushed routes
> is not printed correctly. The diff below fixes that.
>
> ok?
ok stsp@
>
> 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);
>