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

Reply via email to