--- suricata-1.4.3/src/defrag-hash.c.orig Sat Jul 6 14:57:48 2013 +++ suricata-1.4.3/src/defrag-hash.c Sat Jul 6 14:57:57 2013 @@ -312,9 +312,9 @@ typedef struct DefragHashKey4_ { union { struct { - uint32_t src, dst; - uint32_t id; - }; + uint32_t dhk4src, dhk4dst; + uint32_t dhk4id; + } dhk4address; uint32_t u32[3]; }; } DefragHashKey4; @@ -322,9 +322,9 @@ typedef struct DefragHashKey6_ { union { struct { - uint32_t src[4], dst[4]; - uint32_t id; - }; + uint32_t dhk6src[4], dhk6dst[4]; + uint32_t dhk6id; + } dhk6address; uint32_t u32[9]; }; } DefragHashKey6; @@ -341,42 +341,42 @@ uint32_t key; if (p->ip4h != NULL) { - DefragHashKey4 dhk; + DefragHashKey4 dhk4; if (p->src.addr_data32[0] > p->dst.addr_data32[0]) { - dhk.src = p->src.addr_data32[0]; - dhk.dst = p->dst.addr_data32[0]; + dhk4.dhk4address.dhk4src = (uint32_t) p->src.addr_data32[0]; + dhk4.dhk4address.dhk4dst = (uint32_t) p->dst.addr_data32[0]; } else { - dhk.src = p->dst.addr_data32[0]; - dhk.dst = p->src.addr_data32[0]; + dhk4.dhk4address.dhk4src = p->dst.addr_data32[0]; + dhk4.dhk4address.dhk4dst = p->src.addr_data32[0]; } - dhk.id = (uint32_t)IPV4_GET_IPID(p); + dhk4.dhk4address.dhk4id = (uint32_t)IPV4_GET_IPID(p); - uint32_t hash = hashword(dhk.u32, 3, defrag_config.hash_rand); + uint32_t hash = hashword(dhk4.u32, 3, defrag_config.hash_rand); key = hash % defrag_config.hash_size; } else if (p->ip6h != NULL) { - DefragHashKey6 dhk; + DefragHashKey6 dhk6; if (DefragHashRawAddressIPv6GtU32(p->src.addr_data32, p->dst.addr_data32)) { - dhk.src[0] = p->src.addr_data32[0]; - dhk.src[1] = p->src.addr_data32[1]; - dhk.src[2] = p->src.addr_data32[2]; - dhk.src[3] = p->src.addr_data32[3]; - dhk.dst[0] = p->dst.addr_data32[0]; - dhk.dst[1] = p->dst.addr_data32[1]; - dhk.dst[2] = p->dst.addr_data32[2]; - dhk.dst[3] = p->dst.addr_data32[3]; + dhk6.dhk6address.dhk6src[0] = p->src.addr_data32[0]; + dhk6.dhk6address.dhk6src[1] = p->src.addr_data32[1]; + dhk6.dhk6address.dhk6src[2] = p->src.addr_data32[2]; + dhk6.dhk6address.dhk6src[3] = p->src.addr_data32[3]; + dhk6.dhk6address.dhk6dst[0] = p->dst.addr_data32[0]; + dhk6.dhk6address.dhk6dst[1] = p->dst.addr_data32[1]; + dhk6.dhk6address.dhk6dst[2] = p->dst.addr_data32[2]; + dhk6.dhk6address.dhk6dst[3] = p->dst.addr_data32[3]; } else { - dhk.src[0] = p->dst.addr_data32[0]; - dhk.src[1] = p->dst.addr_data32[1]; - dhk.src[2] = p->dst.addr_data32[2]; - dhk.src[3] = p->dst.addr_data32[3]; - dhk.dst[0] = p->src.addr_data32[0]; - dhk.dst[1] = p->src.addr_data32[1]; - dhk.dst[2] = p->src.addr_data32[2]; - dhk.dst[3] = p->src.addr_data32[3]; + dhk6.dhk6address.dhk6src[0] = p->dst.addr_data32[0]; + dhk6.dhk6address.dhk6src[1] = p->dst.addr_data32[1]; + dhk6.dhk6address.dhk6src[2] = p->dst.addr_data32[2]; + dhk6.dhk6address.dhk6src[3] = p->dst.addr_data32[3]; + dhk6.dhk6address.dhk6dst[0] = p->src.addr_data32[0]; + dhk6.dhk6address.dhk6dst[1] = p->src.addr_data32[1]; + dhk6.dhk6address.dhk6dst[2] = p->src.addr_data32[2]; + dhk6.dhk6address.dhk6dst[3] = p->src.addr_data32[3]; } - dhk.id = IPV6_EXTHDR_GET_FH_ID(p); + dhk6.dhk6address.dhk6id = IPV6_EXTHDR_GET_FH_ID(p); - uint32_t hash = hashword(dhk.u32, 9, defrag_config.hash_rand); + uint32_t hash = hashword(dhk6.u32, 9, defrag_config.hash_rand); key = hash % defrag_config.hash_size; } else key = 0;