diff options
author | David S. Miller <davem@davemloft.net> | 2015-04-03 21:18:46 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-04-04 13:26:52 -0400 |
commit | b85c3dc9bd5347ad9540ec8d103b7c049c48b7cd (patch) | |
tree | 181f959eaf7d8084ff33f64d3356e3213c5f01bf /net | |
parent | 073bfd56860446a2cb349bcf282fc17a36ca386c (diff) |
netfilter: Pass nf_hook_state through arpt_do_table().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/netfilter/arp_tables.c | 11 | ||||
-rw-r--r-- | net/ipv4/netfilter/arptable_filter.c | 2 |
2 files changed, 6 insertions, 7 deletions
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index f95b6f93814b..13bfe84bf3ca 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c | |||
@@ -248,8 +248,7 @@ struct arpt_entry *arpt_next_entry(const struct arpt_entry *entry) | |||
248 | 248 | ||
249 | unsigned int arpt_do_table(struct sk_buff *skb, | 249 | unsigned int arpt_do_table(struct sk_buff *skb, |
250 | unsigned int hook, | 250 | unsigned int hook, |
251 | const struct net_device *in, | 251 | const struct nf_hook_state *state, |
252 | const struct net_device *out, | ||
253 | struct xt_table *table) | 252 | struct xt_table *table) |
254 | { | 253 | { |
255 | static const char nulldevname[IFNAMSIZ] __attribute__((aligned(sizeof(long)))); | 254 | static const char nulldevname[IFNAMSIZ] __attribute__((aligned(sizeof(long)))); |
@@ -265,8 +264,8 @@ unsigned int arpt_do_table(struct sk_buff *skb, | |||
265 | if (!pskb_may_pull(skb, arp_hdr_len(skb->dev))) | 264 | if (!pskb_may_pull(skb, arp_hdr_len(skb->dev))) |
266 | return NF_DROP; | 265 | return NF_DROP; |
267 | 266 | ||
268 | indev = in ? in->name : nulldevname; | 267 | indev = state->in ? state->in->name : nulldevname; |
269 | outdev = out ? out->name : nulldevname; | 268 | outdev = state->out ? state->out->name : nulldevname; |
270 | 269 | ||
271 | local_bh_disable(); | 270 | local_bh_disable(); |
272 | addend = xt_write_recseq_begin(); | 271 | addend = xt_write_recseq_begin(); |
@@ -281,8 +280,8 @@ unsigned int arpt_do_table(struct sk_buff *skb, | |||
281 | e = get_entry(table_base, private->hook_entry[hook]); | 280 | e = get_entry(table_base, private->hook_entry[hook]); |
282 | back = get_entry(table_base, private->underflow[hook]); | 281 | back = get_entry(table_base, private->underflow[hook]); |
283 | 282 | ||
284 | acpar.in = in; | 283 | acpar.in = state->in; |
285 | acpar.out = out; | 284 | acpar.out = state->out; |
286 | acpar.hooknum = hook; | 285 | acpar.hooknum = hook; |
287 | acpar.family = NFPROTO_ARP; | 286 | acpar.family = NFPROTO_ARP; |
288 | acpar.hotdrop = false; | 287 | acpar.hotdrop = false; |
diff --git a/net/ipv4/netfilter/arptable_filter.c b/net/ipv4/netfilter/arptable_filter.c index 6a641cb41062..93876d03120c 100644 --- a/net/ipv4/netfilter/arptable_filter.c +++ b/net/ipv4/netfilter/arptable_filter.c | |||
@@ -32,7 +32,7 @@ arptable_filter_hook(const struct nf_hook_ops *ops, struct sk_buff *skb, | |||
32 | { | 32 | { |
33 | const struct net *net = dev_net(state->in ? state->in : state->out); | 33 | const struct net *net = dev_net(state->in ? state->in : state->out); |
34 | 34 | ||
35 | return arpt_do_table(skb, ops->hooknum, state->in, state->out, | 35 | return arpt_do_table(skb, ops->hooknum, state, |
36 | net->ipv4.arptable_filter); | 36 | net->ipv4.arptable_filter); |
37 | } | 37 | } |
38 | 38 | ||