--- zzzz-none-000/linux-2.6.28.10/net/ipv4/fib_semantics.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/net/ipv4/fib_semantics.c 2012-05-07 13:46:59.000000000 +0000 @@ -560,8 +560,12 @@ /* It is not necessary, but requires a bit of thinking */ if (fl.fl4_scope < RT_SCOPE_LINK) fl.fl4_scope = RT_SCOPE_LINK; - if ((err = fib_lookup(net, &fl, &res)) != 0) - return err; + + if ((err = fib_lookup(net, &fl, &res)) != 0) { + struct fib_table *table = fib_get_table(net, cfg->fc_table); + if (table->tb_lookup(table, &fl, &res)) + return err; + } } err = -EINVAL; if (res.type != RTN_UNICAST && res.type != RTN_LOCAL)