@@ -71,10 +71,9 @@ static inline struct brnf_net *brnf_net(const struct net *net)
{
return net_generic(net, brnf_net_id);
}
-#endif
-#ifdef CONFIG_SYSCTL
-#define brnf_flag(skb, flag) init_brnf_net.flag
+#define skb_netns(skb) dev_net((skb)->dev)
+#define brnf_flag(skb, flag) brnf_net(skb_netns(skb))->flag
#else
#define brnf_flag(skb, flag) brnf_##flag
#endif
@@ -1086,6 +1085,9 @@ static int brnf_sysctl_net_register(struct brnf_net *bn)
if (!table)
goto err_alloc;
}
+ for (i = 0; table[i].data; i++)
+ table[i].data += (char *)bn - (char *)&init_brnf_net;
+
hdr = register_net_sysctl(bn->net, "net/bridge", table);
if (!hdr)
goto err_reg;
Signed-off-by: Vasily Averin <vvs@openvz.org> --- net/bridge/br_netfilter.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)