How force a route with ip6_output
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 22 Aug 2023 18:05:32 UTC
Hello, group I'm experimenting with another approach to pf route-to issues mentioned in D41517 and I can't get ip6_output do what I want. How does one force ip6_output to use the provided next hop? ip_output does not seem to have problems with that. As long as ro and ro->nh are not NULL it will just do dst = (struct sockaddr_in *)&ro->ro_dst; … gw = (const struct sockaddr *)dst; and use those without calling fib4_lookup() But I don't see the same logic in ip6_output. There's this check: if (ro->ro_nh != NULL && fwd_tag == NULL && ro->ro_dst.sin6_family == AF_INET6 && IN6_ARE_ADDR_EQUAL(&ro->ro_dst.sin6_addr, &ip6->ip6_dst)) { /* Nexthop is valid and contains valid ifp */ nh = ro->ro_nh; } Which fails beause the IP address in ro_dst is different than in ip6_dst - I am routing traffic to some host over a gateway different than that host. The next block of code deals with fwd_tag, which I have not used, so it restores the destination for lookup to back to ip6->ip6_dst and that prevents ip6_output from using the supplied route. Am I holding it wrong? -- | pozdrawiam / greetings | Powered by macOS, Debian and FreeBSD | | Kajetan Staszkiewicz | www: http://vegeta.tuxpowered.net | `------------------------^--------------------------------------'