Hi, I'll test your diff on an x86 multiprocessor now. Will let you know if there are any issues. My server is not a router, though
On Wed, Sep 23, 2015 at 11:21 AM, Martin Pieuchot <[email protected]> wrote: > Here's an alternative path towards putting rtisvalid(9) checks in the > tree. The end goal is to stop using !RTF_UP routes, so simply bail if > such route is passed to ARP or NDP instead of trying to fetch a > compatible one. > > I hope this will help me find some bugs, I'd appreciate tests and oks. > > > Index: net/route.c > =================================================================== > RCS file: /cvs/src/sys/net/route.c,v > retrieving revision 1.242 > diff -u -p -r1.242 route.c > --- net/route.c 23 Sep 2015 08:49:46 -0000 1.242 > +++ net/route.c 23 Sep 2015 09:16:58 -0000 > @@ -1099,14 +1099,8 @@ rt_checkgate(struct ifnet *ifp, struct r > > KASSERT(rt != NULL); > > - if ((rt->rt_flags & RTF_UP) == 0) { > - rt = rtalloc(dst, RT_REPORT|RT_RESOLVE, rtableid); > - if (rt == NULL) > - return (EHOSTUNREACH); > - rt->rt_refcnt--; > - if (rt->rt_ifp != ifp) > - return (EHOSTUNREACH); > - } > + if ((rt->rt_flags & RTF_UP) == 0) > + return (EHOSTUNREACH); > > rt0 = rt; > > >
