aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/netfilter/br_netfilter.h
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2016-09-21 11:35:01 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2016-09-24 21:25:48 +0200
commitc5136b15ea364124299c8a9ba96b300e96061e3a (patch)
treec5ffa93a950d60bdc5bc0690743c5bc806cd0904 /include/net/netfilter/br_netfilter.h
parentnetfilter: xt_TCPMSS: Refactor the codes to decrease one condition check and more readable (diff)
downloadlinux-dev-c5136b15ea364124299c8a9ba96b300e96061e3a.tar.xz
linux-dev-c5136b15ea364124299c8a9ba96b300e96061e3a.zip
netfilter: bridge: add and use br_nf_hook_thresh
This replaces the last uses of NF_HOOK_THRESH(). Followup patch will remove it and rename nf_hook_thresh. The reason is that inet (non-bridge) netfilter no longer invokes the hooks from hooks, so we do no longer need the thresh value to skip hooks with a lower priority. The bridge netfilter however may need to do this. br_nf_hook_thresh is a wrapper that is supposed to do this, i.e. only call hooks with a priority that exceeds NF_BR_PRI_BRNF. It's used only in the recursion cases of br_netfilter. It invokes nf_hook_slow while holding an rcu read-side critical section to make a future cleanup simpler. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Aaron Conole <aconole@bytheb.org> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include/net/netfilter/br_netfilter.h')
-rw-r--r--include/net/netfilter/br_netfilter.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/net/netfilter/br_netfilter.h b/include/net/netfilter/br_netfilter.h
index e8d1448425a7..0b0c35c37125 100644
--- a/include/net/netfilter/br_netfilter.h
+++ b/include/net/netfilter/br_netfilter.h
@@ -15,6 +15,12 @@ static inline struct nf_bridge_info *nf_bridge_alloc(struct sk_buff *skb)
void nf_bridge_update_protocol(struct sk_buff *skb);
+int br_nf_hook_thresh(unsigned int hook, struct net *net, struct sock *sk,
+ struct sk_buff *skb, struct net_device *indev,
+ struct net_device *outdev,
+ int (*okfn)(struct net *, struct sock *,
+ struct sk_buff *));
+
static inline struct nf_bridge_info *
nf_bridge_info_get(const struct sk_buff *skb)
{