On 25/02/16(Thu) 00:05, Martin Pieuchot wrote: > On 24/02/16(Wed) 21:57, Jean-Daniel Dupas wrote: > > > Le 24 févr. 2016 à 19:58, Martin Pieuchot <m...@openbsd.org> a écrit : > > > > > > On 24/02/16(Wed) 18:56, Jean-Daniel Dupas wrote: > > >> Hello, > > >> > > >> On OpenBSD 5.7, I'm using alternative route table to send ping a on > > specific > > >> route. > > >> > > >> On a fresh install, I simply do > > >> > > >>> route -T 1 add default 192.168.1.1 > > >>> ping -V 1 8.8.8.8 > > >> > > >> It works well on 5.7, but I can't managed to get it working on 5.8. > > >> > > >> On a fresh install of 5.8, doing the same commands result in a "No route > > to > > >> host" error. > > > > > > Which command result in this error? ping? Is this regression also > > > present in -current? It is close to 5.9 so fixing this bug now makes > > > a lot of sense. > > > > > > What does "route -T1 get 8.8.8.8" returns you? Are the outputs of > > > "route -n show" for the table 0 and 1 different between 5.7 and 5.8? > > > Could you post them? > > > > Here is some details. The output of all commands are the same. > > The only change is that trying to access the network using the custom table > > fails. > > The problem is that there's no entry for your gateway, 10.0.0.1, in the > table 1 and the kernel no longer link route entries across tables.
Does the diff below help? Index: net/route.c =================================================================== RCS file: /cvs/src/sys/net/route.c,v retrieving revision 1.294 diff -u -p -r1.294 route.c --- net/route.c 24 Feb 2016 22:41:53 -0000 1.294 +++ net/route.c 25 Feb 2016 06:46:23 -0000 @@ -389,7 +389,8 @@ _rtalloc(struct sockaddr *dst, uint32_t * this behavior. But it is safe since rt_checkgate() wont * allow us to us this route later on. */ - nhrt = rt_match(rt->rt_gateway, NULL, flags | RT_RESOLVE, rtableid); + nhrt = rt_match(rt->rt_gateway, NULL, flags | RT_RESOLVE, + rtable_l2(rtableid)); if (nhrt == NULL) return (rt);