-
- Downloads
netfilter: ctnetlink: make event listener tracking global
pernet tracking doesn't work correctly because other netns might have set NETLINK_LISTEN_ALL_NSID on its event socket. In this case its expected that events originating in other net namespaces are also received. Making pernet-tracking work while also honoring NETLINK_LISTEN_ALL_NSID requires much more intrusive changes both in netlink and nfnetlink, f.e. adding a 'setsockopt' callback that lets nfnetlink know that the event socket entered (or left) ALL_NSID mode. Move to global tracking instead: if there is an event socket anywhere on the system, all net namespaces which have conntrack enabled and use autobind mode will allocate the ecache extension. netlink_has_listeners() returns false only if the given group has no subscribers in any net namespace, the 'net' argument passed to nfnetlink_has_listeners is only used to derive the protocol (nfnetlink), it has no other effect. For proper NETLINK_LISTEN_ALL_NSID-aware pernet tracking of event listeners a new netlink_has_net_listeners() is also needed. Fixes: 90d1daa4 ("netfilter: conntrack: add nf_conntrack_events autodetect mode") Reported-by:Bryce Kahle <bryce.kahle@datadoghq.com> Signed-off-by:
Florian Westphal <fw@strlen.de> Signed-off-by:
Pablo Neira Ayuso <pablo@netfilter.org>
Showing
- include/linux/netfilter.h 5 additions, 0 deletionsinclude/linux/netfilter.h
- include/net/netns/conntrack.h 0 additions, 1 deletioninclude/net/netns/conntrack.h
- net/netfilter/core.c 3 additions, 0 deletionsnet/netfilter/core.c
- net/netfilter/nf_conntrack_ecache.c 1 addition, 1 deletionnet/netfilter/nf_conntrack_ecache.c
- net/netfilter/nfnetlink.c 5 additions, 4 deletionsnet/netfilter/nfnetlink.c
Loading
Please register or sign in to comment