On Sat, Mar 26, 2016 at 02:58:37PM +0100, Martin Pieuchot wrote:
> semarie@ found that rtadvd(8) is printing the following messages with an
> ART-enabled kernel:
> 
>   "rtadvd[43548]: new interface route's plen 128 is invalid for a prefix"
> 
> This is due to the prefix length to mask conversion code.  Previously
> the RTAX_NETMASK argument of a routing message was NULL for every host
> route.  With ART it contains a mask of the size of the address.
> 
> Diff below fixes that, ok?

OK bluhm@

> 
> Index: net/route.c
> ===================================================================
> RCS file: /cvs/src/sys/net/route.c,v
> retrieving revision 1.296
> diff -u -p -r1.296 route.c
> --- net/route.c       7 Mar 2016 18:44:00 -0000       1.296
> +++ net/route.c       26 Mar 2016 10:15:01 -0000
> @@ -480,7 +480,8 @@ rt_sendmsg(struct rtentry *rt, int cmd, 
>       memset(&info, 0, sizeof(info));
>       info.rti_info[RTAX_DST] = rt_key(rt);
>       info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
> -     info.rti_info[RTAX_NETMASK] = rt_plen2mask(rt, &sa_mask);
> +     if (!ISSET(rt->rt_flags, RTF_HOST))
> +             info.rti_info[RTAX_NETMASK] = rt_plen2mask(rt, &sa_mask);
>       info.rti_info[RTAX_LABEL] = rtlabel_id2sa(rt->rt_labelid, &sa_rl);
>       ifp = if_get(rt->rt_ifidx);
>       if (ifp != NULL) {

Reply via email to