diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-04-29 23:43:04 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-04-29 23:43:04 +0200 |
commit | d5b8311d81719f90a8f8d7f0b85ad320b9d7a0cd (patch) | |
tree | 21f97e4d1a53d35ded02a35c6fd587265ddff897 /include | |
parent | 096567100178c1f2d49b0d3e7764e665d547c3fa (diff) |
conntrack: fix new ATTR_GRP_[ORIG|REPL]_ADDR_[SRC|DST]
The previous patch was incomplete. This fixes several issues with
it like the IPV4 and IPV6 address are mutually exclusive, thus,
the getter operation works. No sane way to support the setter
operation correctly, thus, it's been documented that it has no
effect.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/internal/bitops.h | 13 | ||||
-rw-r--r-- | include/internal/extern.h | 5 | ||||
-rw-r--r-- | include/internal/internal.h | 3 |
3 files changed, 20 insertions, 1 deletions
diff --git a/include/internal/bitops.h b/include/internal/bitops.h index 0c1fde8..7ae566b 100644 --- a/include/internal/bitops.h +++ b/include/internal/bitops.h @@ -60,4 +60,17 @@ test_bitmask_u32(const uint32_t *buf1, const uint32_t *buf2, int len) return 1; } +static inline int +test_bitmask_u32_or(const uint32_t *buf1, const uint32_t *buf2, int len) +{ + int i; + + for (i=0; i<len; i++) { + if (buf1[i] & buf2[i]) { + return 1; + } + } + return 0; +} + #endif diff --git a/include/internal/extern.h b/include/internal/extern.h index fb9ca54..405c9ca 100644 --- a/include/internal/extern.h +++ b/include/internal/extern.h @@ -11,7 +11,10 @@ extern const get_attr_grp get_attr_grp_array[]; extern const set_exp_attr set_exp_attr_array[]; extern const get_exp_attr get_exp_attr_array[]; -extern const uint32_t attr_grp_bitmask[ATTR_GRP_MAX][__NFCT_BITSET]; +extern const struct attr_grp_bitmask { + uint32_t bitmask[__NFCT_BITSET]; + uint32_t type; +} attr_grp_bitmask[ATTR_GRP_MAX]; extern const set_filter_dump_attr set_filter_dump_attr_array[]; diff --git a/include/internal/internal.h b/include/internal/internal.h index b2b1c43..aaf6bd4 100644 --- a/include/internal/internal.h +++ b/include/internal/internal.h @@ -82,4 +82,7 @@ struct nf_ct_tcp_flags { u_int8_t mask; }; +#define NFCT_BITMASK_AND 0 +#define NFCT_BITMASK_OR 1 + #endif |