aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/act_api.h
diff options
context:
space:
mode:
authorBenjamin LaHaise <bcrl@kvack.org>2013-01-14 00:15:39 -0500
committerDavid S. Miller <davem@davemloft.net>2013-01-14 15:09:36 -0500
commitc1b52739e45f5969b208ebc377f52468280af11e (patch)
tree313ee0c665f27b7d3ea31c8984879930f1de7021 /include/net/act_api.h
parent605928337866c6369ae60509fa2b10af325a25eb (diff)
pkt_sched: namespace aware act_mirred
Eric Dumazet pointed out that act_mirred needs to find the current net_ns, and struct net pointer is not provided in the call chain. His original patch made use of current->nsproxy->net_ns to find the network namespace, but this fails to work correctly for userspace code that makes use of netlink sockets in different network namespaces. Instead, pass the "struct net *" down along the call chain to where it is needed. This version removes the ifb changes as Eric has submitted that patch separately, but is otherwise identical to the previous version. Signed-off-by: Benjamin LaHaise <bcrl@kvack.org> Tested-by: Eric Dumazet <eric.dumazet@gmail.com> Acked-by: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/act_api.h')
-rw-r--r--include/net/act_api.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/include/net/act_api.h b/include/net/act_api.h
index c739531e1564..112c25c393a2 100644
--- a/include/net/act_api.h
+++ b/include/net/act_api.h
@@ -91,7 +91,9 @@ struct tc_action_ops {
91 int (*dump)(struct sk_buff *, struct tc_action *, int, int); 91 int (*dump)(struct sk_buff *, struct tc_action *, int, int);
92 int (*cleanup)(struct tc_action *, int bind); 92 int (*cleanup)(struct tc_action *, int bind);
93 int (*lookup)(struct tc_action *, u32); 93 int (*lookup)(struct tc_action *, u32);
94 int (*init)(struct nlattr *, struct nlattr *, struct tc_action *, int , int); 94 int (*init)(struct net *net, struct nlattr *nla,
95 struct nlattr *est, struct tc_action *act, int ovr,
96 int bind);
95 int (*walk)(struct sk_buff *, struct netlink_callback *, int, struct tc_action *); 97 int (*walk)(struct sk_buff *, struct netlink_callback *, int, struct tc_action *);
96}; 98};
97 99
@@ -116,8 +118,12 @@ extern int tcf_register_action(struct tc_action_ops *a);
116extern int tcf_unregister_action(struct tc_action_ops *a); 118extern int tcf_unregister_action(struct tc_action_ops *a);
117extern void tcf_action_destroy(struct tc_action *a, int bind); 119extern void tcf_action_destroy(struct tc_action *a, int bind);
118extern int tcf_action_exec(struct sk_buff *skb, const struct tc_action *a, struct tcf_result *res); 120extern int tcf_action_exec(struct sk_buff *skb, const struct tc_action *a, struct tcf_result *res);
119extern struct tc_action *tcf_action_init(struct nlattr *nla, struct nlattr *est, char *n, int ovr, int bind); 121extern struct tc_action *tcf_action_init(struct net *net, struct nlattr *nla,
120extern struct tc_action *tcf_action_init_1(struct nlattr *nla, struct nlattr *est, char *n, int ovr, int bind); 122 struct nlattr *est, char *n, int ovr,
123 int bind);
124extern struct tc_action *tcf_action_init_1(struct net *net, struct nlattr *nla,
125 struct nlattr *est, char *n, int ovr,
126 int bind);
121extern int tcf_action_dump(struct sk_buff *skb, struct tc_action *a, int, int); 127extern int tcf_action_dump(struct sk_buff *skb, struct tc_action *a, int, int);
122extern int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, int); 128extern int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, int);
123extern int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int); 129extern int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int);