Skip to content

Commit

Permalink
[NETNS]: Process FIB rule action in the context of the namespace.
Browse files Browse the repository at this point in the history
Save namespace context on the fib rule at the rule creation time and
call routing lookup in the correct namespace.

Signed-off-by: Denis V. Lunev <den@openvz.org>
Acked-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Denis V. Lunev authored and David S. Miller committed Jan 28, 2008
1 parent 9e3a548 commit 51314a1
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 1 deletion.
1 change: 1 addition & 0 deletions include/net/fib_rules.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ struct fib_rule
u32 target;
struct fib_rule * ctarget;
struct rcu_head rcu;
struct net * fr_net;
};

struct fib_lookup_arg
Expand Down
2 changes: 2 additions & 0 deletions net/core/fib_rules.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ int fib_default_rule_add(struct fib_rules_ops *ops,
r->pref = pref;
r->table = table;
r->flags = flags;
r->fr_net = ops->fro_net;

/* The lock is not required here, the list in unreacheable
* at the moment this function is called */
Expand Down Expand Up @@ -242,6 +243,7 @@ static int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
err = -ENOMEM;
goto errout;
}
rule->fr_net = net;

if (tb[FRA_PRIORITY])
rule->pref = nla_get_u32(tb[FRA_PRIORITY]);
Expand Down
2 changes: 1 addition & 1 deletion net/ipv4/fib_rules.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ static int fib4_rule_action(struct fib_rule *rule, struct flowi *flp,
goto errout;
}

if ((tbl = fib_get_table(&init_net, rule->table)) == NULL)
if ((tbl = fib_get_table(rule->fr_net, rule->table)) == NULL)
goto errout;

err = tbl->tb_lookup(tbl, flp, (struct fib_result *) arg->result);
Expand Down

0 comments on commit 51314a1

Please sign in to comment.