summaryrefslogtreecommitdiffstats
path: root/utils/conntrack_filter.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2009-07-14 16:43:55 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2009-07-14 16:43:55 +0200
commitdd73e5708cc2cd127ba03fd5a82fb96b3928e7fb (patch)
tree51c6fcb589cdb399bda4f5b134dedf2d1ca5b328 /utils/conntrack_filter.c
parent1c450e1595afdc8d1bfabb4f640c9251808426eb (diff)
bsf: add support for IPv6 address filtering
This patch adds support to auto-generate BSF code for IPv6. It requires a Linux kernel >= 2.6.29. The maximum number of addresses is limited to 20 (12 BSF lines per IPv6 address comparison). I am not sure that to remove this limit is useful given that oprofile does not show very good numbers for very large (in terms of lines) filters. This completes one feature that is available in IPv4 but that was missing in IPv6. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'utils/conntrack_filter.c')
-rw-r--r--utils/conntrack_filter.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/utils/conntrack_filter.c b/utils/conntrack_filter.c
index 7c44c50..0252fbf 100644
--- a/utils/conntrack_filter.c
+++ b/utils/conntrack_filter.c
@@ -66,6 +66,19 @@ int main()
nfct_filter_add_attr(filter, NFCT_FILTER_SRC_IPV4, &filter_ipv4);
+ /* BSF always wants data in host-byte order */
+ struct nfct_filter_ipv6 filter_ipv6 = {
+ .addr = { 0x0, 0x0, 0x0, 0x1 },
+ .mask = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff },
+ };
+
+ /* ignore whatever that comes from ::1 (loopback) */
+ nfct_filter_set_logic(filter,
+ NFCT_FILTER_SRC_IPV6,
+ NFCT_FILTER_LOGIC_NEGATIVE);
+
+ nfct_filter_add_attr(filter, NFCT_FILTER_SRC_IPV6, &filter_ipv6);
+
if (nfct_filter_attach(nfct_fd(h), filter) == -1) {
perror("nfct_filter_attach");
return 0;