netfilter: nf_conntrack: nf_conntrack snmp helper
Adding support for SNMP broadcast connection tracking. The SNMP broadcast requests are now paired with the SNMP responses. Thus allowing using SNMP broadcasts with firewall enabled. Please refer to the following conversation: http://marc.info/?l=netfilter-devel&m=125992205006600&w=2 Patrick McHardy wrote: > > The best solution would be to add generic broadcast tracking, the > > use of expectations for this is a bit of abuse. > > The second best choice I guess would be to move the help() function > > to a shared module and generalize it so it can be used for both. This patch implements the "second best choice". Since the netbios-ns conntrack module uses the same helper functionality as the snmp, only one helper function is added for both snmp and netbios-ns modules into the new object - nf_conntrack_broadcast. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
committed by
Patrick McHardy
parent
94d117a1c7
commit
93557f53e1
@@ -206,8 +206,9 @@ config IP_NF_TARGET_REDIRECT
|
||||
|
||||
config NF_NAT_SNMP_BASIC
|
||||
tristate "Basic SNMP-ALG support"
|
||||
depends on NF_NAT
|
||||
depends on NF_CONNTRACK_SNMP && NF_NAT
|
||||
depends on NETFILTER_ADVANCED
|
||||
default NF_NAT && NF_CONNTRACK_SNMP
|
||||
---help---
|
||||
|
||||
This module implements an Application Layer Gateway (ALG) for
|
||||
|
@@ -54,6 +54,7 @@
|
||||
#include <net/netfilter/nf_conntrack_expect.h>
|
||||
#include <net/netfilter/nf_conntrack_helper.h>
|
||||
#include <net/netfilter/nf_nat_helper.h>
|
||||
#include <linux/netfilter/nf_conntrack_snmp.h>
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("James Morris <jmorris@intercode.com.au>");
|
||||
@@ -1310,9 +1311,9 @@ static int __init nf_nat_snmp_basic_init(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
ret = nf_conntrack_helper_register(&snmp_helper);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
BUG_ON(nf_nat_snmp_hook != NULL);
|
||||
rcu_assign_pointer(nf_nat_snmp_hook, help);
|
||||
|
||||
ret = nf_conntrack_helper_register(&snmp_trap_helper);
|
||||
if (ret < 0) {
|
||||
nf_conntrack_helper_unregister(&snmp_helper);
|
||||
@@ -1323,7 +1324,7 @@ static int __init nf_nat_snmp_basic_init(void)
|
||||
|
||||
static void __exit nf_nat_snmp_basic_fini(void)
|
||||
{
|
||||
nf_conntrack_helper_unregister(&snmp_helper);
|
||||
rcu_assign_pointer(nf_nat_snmp_hook, NULL);
|
||||
nf_conntrack_helper_unregister(&snmp_trap_helper);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user