On Thu, Aug 29, 2019 at 10:55:44PM +0200, Alexander Bluhm wrote:
> Hi,
> 
> The kernel uses rtm_addrs as a bit field for addresses that are
> included in the routing message.  The significance of the bits has
> to be consistent with the order of the addresss.  In route(8) store
> addresses in ascending order of RTA values.  This allows to use
> MPLS routes together with route labels.
> 
> ok?

OK claudio@
 
> bluhm
> 
> Index: sbin/route/route.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sbin/route/route.c,v
> retrieving revision 1.231
> diff -u -p -r1.231 route.c
> --- sbin/route/route.c        29 Aug 2019 14:28:34 -0000      1.231
> +++ sbin/route/route.c        29 Aug 2019 20:44:35 -0000
> @@ -68,7 +68,7 @@
>  const struct if_status_description
>                       if_status_descriptions[] = LINK_STATE_DESCRIPTIONS;
> 
> -union sockunion so_dst, so_gate, so_mask, so_ifa, so_ifp, so_label, so_src;
> +union sockunion so_dst, so_gate, so_mask, so_ifa, so_ifp, so_src, so_label;
> 
>  typedef union sockunion *sup;
>  pid_t        pid;
> @@ -1087,13 +1087,14 @@ rtmsg(int cmd, int flags, int fmask, uin
> 
>       if (rtm_addrs & RTA_NETMASK)
>               mask_addr(&so_dst, &so_mask, RTA_DST);
> +     /* store addresses in ascending order of RTA values */
>       NEXTADDR(RTA_DST, so_dst);
>       NEXTADDR(RTA_GATEWAY, so_gate);
>       NEXTADDR(RTA_NETMASK, so_mask);
>       NEXTADDR(RTA_IFP, so_ifp);
>       NEXTADDR(RTA_IFA, so_ifa);
> -     NEXTADDR(RTA_LABEL, so_label);
>       NEXTADDR(RTA_SRC, so_src);
> +     NEXTADDR(RTA_LABEL, so_label);
>       rtm.rtm_msglen = l = cp - (char *)&m_rtmsg;
>       if (verbose)
>               print_rtmsg(&rtm, l);
> 

-- 
:wq Claudio

Reply via email to