diff options
| author | Alexander Wirt <formorer@debian.org> | 2014-09-19 10:15:14 +0200 |
|---|---|---|
| committer | Alexander Wirt <formorer@debian.org> | 2014-09-19 10:15:14 +0200 |
| commit | c31a7efc19b438188e96cab1ca34116a51f3e914 (patch) | |
| tree | 38101c9c0d76567fe99608fe7c7c39e8070bd6e4 /src/cache-ct.c | |
| parent | 45669cfafbb57da51e1c0beeec392c380c6cd2cf (diff) | |
| parent | 9f760e5d3f6b44ecf5bb7144517e022fd987fa76 (diff) | |
| download | conntrack-tools-c31a7efc19b438188e96cab1ca34116a51f3e914.tar.gz conntrack-tools-c31a7efc19b438188e96cab1ca34116a51f3e914.zip | |
Merge tag 'upstream/1.4.2'
Upstream version 1.4.2
Diffstat (limited to 'src/cache-ct.c')
| -rw-r--r-- | src/cache-ct.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/cache-ct.c b/src/cache-ct.c index 0ad8d2a..f86d143 100644 --- a/src/cache-ct.c +++ b/src/cache-ct.c @@ -59,7 +59,7 @@ cache_hash6_ct(const struct nf_conntrack *ct, const struct hashtable *table) uint32_t a[10]; memcpy(&a[0], nfct_get_attr(ct, ATTR_IPV6_SRC), sizeof(uint32_t)*4); - memcpy(&a[4], nfct_get_attr(ct, ATTR_IPV6_SRC), sizeof(uint32_t)*4); + memcpy(&a[4], nfct_get_attr(ct, ATTR_IPV6_DST), sizeof(uint32_t)*4); a[8] = nfct_get_attr_u8(ct, ATTR_ORIG_L3PROTO) << 16 | nfct_get_attr_u8(ct, ATTR_ORIG_L4PROTO); a[9] = nfct_get_attr_u16(ct, ATTR_ORIG_PORT_SRC) << 16 | @@ -88,14 +88,21 @@ cache_ct_hash(const void *data, const struct hashtable *table) return ret; } +/* master conntrack of expectations have no ID */ +static inline int +cache_ct_cmp_id(const struct nf_conntrack *ct1, const struct nf_conntrack *ct2) +{ + return nfct_attr_is_set(ct2, ATTR_ID) ? + nfct_get_attr_u32(ct1, ATTR_ID) == nfct_get_attr_u32(ct2, ATTR_ID) : 1; +} + static int cache_ct_cmp(const void *data1, const void *data2) { const struct cache_object *obj = data1; const struct nf_conntrack *ct = data2; return nfct_cmp(obj->ptr, ct, NFCT_CMP_ORIG) && - nfct_get_attr_u32(obj->ptr, ATTR_ID) == - nfct_get_attr_u32(ct, ATTR_ID); + cache_ct_cmp_id(obj->ptr, ct); } static void *cache_ct_alloc(void) |
