net: Fix nexthop lookups
Andreas reported breakage adding routes with local nexthops: $ ip route show table main ... 172.28.0.0/24 dev vnf-xe1p0 proto kernel scope link src 172.28.0.16 $ ip route add 10.0.0.0/8 via 172.28.0.32 table 100 dev vnf-xe1p0 RTNETLINK answers: Resource temporarily unavailable3bfd847203changed the lookup to use the passed in table but for cases like this the nexthop is in the local table rather than the passed in table. Fixes:3bfd847203("net: Use passed in table for nexthop lookups") Reported-by: Andreas Schultz <aschultz@tpip.net> Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
eb4cb85180
commit
4c9bcd1179
@ -712,9 +712,16 @@ static int fib_check_nh(struct fib_config *cfg, struct fib_info *fi,
|
||||
err = fib_table_lookup(tbl, &fl4, &res,
|
||||
FIB_LOOKUP_IGNORE_LINKSTATE |
|
||||
FIB_LOOKUP_NOREF);
|
||||
else
|
||||
|
||||
/* on error or if no table given do full lookup. This
|
||||
* is needed for example when nexthops are in the local
|
||||
* table rather than the given table
|
||||
*/
|
||||
if (!tbl || err) {
|
||||
err = fib_lookup(net, &fl4, &res,
|
||||
FIB_LOOKUP_IGNORE_LINKSTATE);
|
||||
}
|
||||
|
||||
if (err) {
|
||||
rcu_read_unlock();
|
||||
return err;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user