|
@@ -1340,7 +1340,7 @@ err:
|
|
}
|
|
}
|
|
|
|
|
|
/* should be called with rcu_read_lock */
|
|
/* should be called with rcu_read_lock */
|
|
-static int check_leaf(struct trie *t, struct leaf *l,
|
|
|
|
|
|
+static int check_leaf(struct fib_table *tb, struct trie *t, struct leaf *l,
|
|
t_key key, const struct flowi *flp,
|
|
t_key key, const struct flowi *flp,
|
|
struct fib_result *res, int fib_flags)
|
|
struct fib_result *res, int fib_flags)
|
|
{
|
|
{
|
|
@@ -1356,7 +1356,7 @@ static int check_leaf(struct trie *t, struct leaf *l,
|
|
if (l->key != (key & ntohl(mask)))
|
|
if (l->key != (key & ntohl(mask)))
|
|
continue;
|
|
continue;
|
|
|
|
|
|
- err = fib_semantic_match(&li->falh, flp, res, plen, fib_flags);
|
|
|
|
|
|
+ err = fib_semantic_match(tb, &li->falh, flp, res, plen, fib_flags);
|
|
|
|
|
|
#ifdef CONFIG_IP_FIB_TRIE_STATS
|
|
#ifdef CONFIG_IP_FIB_TRIE_STATS
|
|
if (err <= 0)
|
|
if (err <= 0)
|
|
@@ -1398,7 +1398,7 @@ int fib_table_lookup(struct fib_table *tb, const struct flowi *flp,
|
|
|
|
|
|
/* Just a leaf? */
|
|
/* Just a leaf? */
|
|
if (IS_LEAF(n)) {
|
|
if (IS_LEAF(n)) {
|
|
- ret = check_leaf(t, (struct leaf *)n, key, flp, res, fib_flags);
|
|
|
|
|
|
+ ret = check_leaf(tb, t, (struct leaf *)n, key, flp, res, fib_flags);
|
|
goto found;
|
|
goto found;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1423,7 +1423,7 @@ int fib_table_lookup(struct fib_table *tb, const struct flowi *flp,
|
|
}
|
|
}
|
|
|
|
|
|
if (IS_LEAF(n)) {
|
|
if (IS_LEAF(n)) {
|
|
- ret = check_leaf(t, (struct leaf *)n, key, flp, res, fib_flags);
|
|
|
|
|
|
+ ret = check_leaf(tb, t, (struct leaf *)n, key, flp, res, fib_flags);
|
|
if (ret > 0)
|
|
if (ret > 0)
|
|
goto backtrace;
|
|
goto backtrace;
|
|
goto found;
|
|
goto found;
|