aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/netfilter_bridge
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2021-07-23 15:18:01 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2021-08-02 11:40:45 +0200
commit87663c39f898b18905499126548da61450628682 (patch)
tree29daf9f95c0993b2c5cf1319d0285d3fe51d11ae /include/linux/netfilter_bridge
parentnetfilter: remove xt pernet data (diff)
downloadlinux-dev-87663c39f898b18905499126548da61450628682.tar.xz
linux-dev-87663c39f898b18905499126548da61450628682.zip
netfilter: ebtables: do not hook tables by default
If any of these modules is loaded, hooks get registered in all netns: Before: 'unshare -n nft list hooks' shows: family bridge hook prerouting { -2147483648 ebt_broute -0000000300 ebt_nat_hook } family bridge hook input { -0000000200 ebt_filter_hook } family bridge hook forward { -0000000200 ebt_filter_hook } family bridge hook output { +0000000100 ebt_nat_hook +0000000200 ebt_filter_hook } family bridge hook postrouting { +0000000300 ebt_nat_hook } This adds 'template 'tables' for ebtables. Each ebtable_foo registers the table as a template, with an init function that gets called once the first get/setsockopt call is made. ebtables core then searches the (per netns) list of tables. If no table is found, it searches the list of templates instead. If a template entry exists, the init function is called which will enable the table and register the hooks (so packets are diverted to the table). If no entry is found in the template list, request_module is called. After this, hook registration is delayed until the 'ebtables' (set/getsockopt) request is made for a given table and will only happen in the specific namespace. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include/linux/netfilter_bridge')
-rw-r--r--include/linux/netfilter_bridge/ebtables.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/netfilter_bridge/ebtables.h b/include/linux/netfilter_bridge/ebtables.h
index a8178253ce53..10a01978bc0d 100644
--- a/include/linux/netfilter_bridge/ebtables.h
+++ b/include/linux/netfilter_bridge/ebtables.h
@@ -127,4 +127,6 @@ static inline bool ebt_invalid_target(int target)
return (target < -NUM_STANDARD_TARGETS || target >= 0);
}
+int ebt_register_template(const struct ebt_table *t, int(*table_init)(struct net *net));
+void ebt_unregister_template(const struct ebt_table *t);
#endif