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