]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Share Packet checksum values for TCP, UDP, IPv6. ICMPv4 and ICMPv6
authorKen Steele <ken@tilera.com>
Thu, 14 Nov 2013 18:20:10 +0000 (13:20 -0500)
committerVictor Julien <victor@inliniac.net>
Mon, 18 Nov 2013 12:58:26 +0000 (13:58 +0100)
Keep a separate checksum for IPV4, since a packet can have both an IPV4
checksum and a TCPV4 checksum, or IPV4 and UDPV4 checksum.

This will allow future sharing of more values.

Use PACKET_RESET_CHECKSUMS() in Unit Tests in place of setting the
individual checksum values.

src/decode-icmpv4.h
src/decode-icmpv6.h
src/decode-tcp.h
src/decode-udp.h
src/decode.h
src/detect-csum.c
src/detect.c
src/stream-tcp.c

index 547bb06745f4093e704cfce67bf1f3d1525f4912..0bbd8cf62943cd29f4e75662beb1a10124211280 100644 (file)
@@ -177,9 +177,6 @@ typedef struct ICMPV4ExtHdr_
 /* ICMPv4 vars */
 typedef struct ICMPV4Vars_
 {
-    /* checksum computed over the icmpv4 packet */
-    int32_t comp_csum;
-
     uint16_t  id;
     uint16_t  seq;
     uint32_t  mtu;
@@ -203,7 +200,7 @@ typedef struct ICMPV4Vars_
 } ICMPV4Vars;
 
 #define CLEAR_ICMPV4_PACKET(p) do { \
-    (p)->icmpv4vars.comp_csum = -1; \
+    (p)->comp_csum = -1; \
     (p)->icmpv4vars.id = 0; \
     (p)->icmpv4vars.seq = 0; \
     (p)->icmpv4vars.mtu = 0; \
index a2f84061aa58d5712e11ffa7eb57b1acd0313b6c..8ff979fa79d11b94735ae10dc38fe154b4f7994b 100644 (file)
@@ -127,9 +127,6 @@ typedef struct ICMPV6Hdr_
 
 /** Data available from the decoded packet */
 typedef struct ICMPV6Vars_ {
-    /* checksum computed over the icmpv6 packet */
-    int32_t comp_csum;
-
     /* checksum of the icmpv6 packet */
     uint16_t  id;
     uint16_t  seq;
@@ -155,7 +152,7 @@ typedef struct ICMPV6Vars_ {
 
 
 #define CLEAR_ICMPV6_PACKET(p) do { \
-    (p)->icmpv6vars.comp_csum = -1; \
+    (p)->comp_csum = -1; \
     (p)->icmpv6vars.id = 0; \
     (p)->icmpv6vars.seq = 0; \
     (p)->icmpv6vars.mtu = 0; \
index e9ab99ea6862b82d66a1988cba222147cb074653..33fa814db4a0131981f2baf051b3c06f018c46ce 100644 (file)
@@ -140,9 +140,6 @@ typedef struct TCPHdr_
 
 typedef struct TCPVars_
 {
-    /* checksum computed over the tcp(for both ipv4 and ipv6) packet */
-    int32_t comp_csum;
-
     uint8_t tcp_opt_cnt;
     TCPOpt tcp_opts[TCP_OPTMAX];
 
@@ -156,7 +153,7 @@ typedef struct TCPVars_
 
 #define CLEAR_TCP_PACKET(p) { \
     (p)->tcph = NULL; \
-    (p)->tcpvars.comp_csum = -1; \
+    (p)->comp_csum = -1; \
     (p)->tcpvars.tcp_opt_cnt = 0; \
     (p)->tcpvars.ts = NULL; \
     (p)->tcpvars.sack = NULL; \
index 037a91f3b4f7c229dca1860a5c27d4066ff50197..1cd34877b04be4b4eff09483ca37b66743c2e3bd 100644 (file)
@@ -46,13 +46,11 @@ typedef struct UDPHdr_
 
 typedef struct UDPVars_
 {
-    /* checksum computed over the udp(for both ipv4 and ipv6) packet */
-    int32_t comp_csum;
 } UDPVars;
 
 #define CLEAR_UDP_PACKET(p) do { \
     (p)->udph = NULL; \
-    (p)->udpvars.comp_csum = -1; \
+    (p)->comp_csum = -1; \
 } while (0)
 
 void DecodeUDPV4RegisterTests(void);
index 29d317d2b7c141d4739629316ffe452a2560c5af..0b7fbb5e4e388444addc44ab13bec0039fcaacab 100644 (file)
@@ -427,6 +427,9 @@ typedef struct Packet_
     /* header pointers */
     EthernetHdr *ethh;
 
+    /* Check sum for TCP, UDP or ICMP packets */
+    int32_t comp_csum;
+
     IPV4Hdr *ip4h;
     IPV4Vars ip4vars;
 
@@ -610,10 +613,7 @@ typedef struct DecodeThreadVars_
  */
 #define PACKET_RESET_CHECKSUMS(p) do { \
         (p)->ip4vars.comp_csum = -1;   \
-        (p)->tcpvars.comp_csum = -1;      \
-        (p)->udpvars.comp_csum = -1;      \
-        (p)->icmpv4vars.comp_csum = -1;   \
-        (p)->icmpv6vars.comp_csum = -1;   \
+        (p)->comp_csum = -1;   \
     } while (0)
 
 /**
index c45219dff8f2446c2b12a05a77861ba3ade8f547..ca14f773222be95a4464be05bb41be74f2cd4833 100644 (file)
@@ -335,14 +335,14 @@ int DetectTCPV4CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
         return cd->valid;
     }
 
-    if (p->tcpvars.comp_csum == -1)
-        p->tcpvars.comp_csum = TCPCalculateChecksum(p->ip4h->s_ip_addrs,
-                                                 (uint16_t *)p->tcph,
-                                                 (p->payload_len + TCP_GET_HLEN(p)));
+    if (p->comp_csum == -1)
+        p->comp_csum = TCPCalculateChecksum(p->ip4h->s_ip_addrs,
+                                            (uint16_t *)p->tcph,
+                                            (p->payload_len + TCP_GET_HLEN(p)));
 
-    if (p->tcpvars.comp_csum == p->tcph->th_sum && cd->valid == 1)
+    if (p->comp_csum == p->tcph->th_sum && cd->valid == 1)
         return 1;
-    else if (p->tcpvars.comp_csum != p->tcph->th_sum && cd->valid == 0)
+    else if (p->comp_csum != p->tcph->th_sum && cd->valid == 0)
         return 1;
     else
         return 0;
@@ -430,14 +430,14 @@ int DetectTCPV6CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
         return cd->valid;
     }
 
-    if (p->tcpvars.comp_csum == -1)
-        p->tcpvars.comp_csum = TCPV6CalculateChecksum(p->ip6h->s_ip6_addrs,
-                                                   (uint16_t *)p->tcph,
-                                                   (p->payload_len + TCP_GET_HLEN(p)));
+    if (p->comp_csum == -1)
+        p->comp_csum = TCPV6CalculateChecksum(p->ip6h->s_ip6_addrs,
+                                              (uint16_t *)p->tcph,
+                                              (p->payload_len + TCP_GET_HLEN(p)));
 
-    if (p->tcpvars.comp_csum == p->tcph->th_sum && cd->valid == 1)
+    if (p->comp_csum == p->tcph->th_sum && cd->valid == 1)
         return 1;
-    else if (p->tcpvars.comp_csum != p->tcph->th_sum && cd->valid == 0)
+    else if (p->comp_csum != p->tcph->th_sum && cd->valid == 0)
         return 1;
     else
         return 0;
@@ -525,15 +525,15 @@ int DetectUDPV4CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
         return cd->valid;
     }
 
-    if (p->udpvars.comp_csum == -1)
-        p->udpvars.comp_csum = UDPV4CalculateChecksum(p->ip4h->s_ip_addrs,
-                                                   (uint16_t *)p->udph,
-                                                   (p->payload_len +
-                                                    UDP_HEADER_LEN) );
+    if (p->comp_csum == -1)
+        p->comp_csum = UDPV4CalculateChecksum(p->ip4h->s_ip_addrs,
+                                              (uint16_t *)p->udph,
+                                              (p->payload_len +
+                                               UDP_HEADER_LEN) );
 
-    if (p->udpvars.comp_csum == p->udph->uh_sum && cd->valid == 1)
+    if (p->comp_csum == p->udph->uh_sum && cd->valid == 1)
         return 1;
-    else if (p->udpvars.comp_csum != p->udph->uh_sum && cd->valid == 0)
+    else if (p->comp_csum != p->udph->uh_sum && cd->valid == 0)
         return 1;
     else
         return 0;
@@ -621,15 +621,15 @@ int DetectUDPV6CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
         return cd->valid;
     }
 
-    if (p->udpvars.comp_csum == -1)
-        p->udpvars.comp_csum = UDPV6CalculateChecksum(p->ip6h->s_ip6_addrs,
-                                                   (uint16_t *)p->udph,
-                                                   (p->payload_len +
-                                                    UDP_HEADER_LEN) );
+    if (p->comp_csum == -1)
+        p->comp_csum = UDPV6CalculateChecksum(p->ip6h->s_ip6_addrs,
+                                              (uint16_t *)p->udph,
+                                              (p->payload_len +
+                                               UDP_HEADER_LEN) );
 
-    if (p->udpvars.comp_csum == p->udph->uh_sum && cd->valid == 1)
+    if (p->comp_csum == p->udph->uh_sum && cd->valid == 1)
         return 1;
-    else if (p->udpvars.comp_csum != p->udph->uh_sum && cd->valid == 0)
+    else if (p->comp_csum != p->udph->uh_sum && cd->valid == 0)
         return 1;
     else
         return 0;
@@ -717,14 +717,14 @@ int DetectICMPV4CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
         return cd->valid;
     }
 
-    if (p->icmpv4vars.comp_csum == -1)
-        p->icmpv4vars.comp_csum = ICMPV4CalculateChecksum((uint16_t *)p->icmpv4h,
-                                                       ntohs(IPV4_GET_RAW_IPLEN(p->ip4h)) -
-                                                       IPV4_GET_RAW_HLEN(p->ip4h) * 4);
+    if (p->comp_csum == -1)
+        p->comp_csum = ICMPV4CalculateChecksum((uint16_t *)p->icmpv4h,
+                                               ntohs(IPV4_GET_RAW_IPLEN(p->ip4h)) -
+                                               IPV4_GET_RAW_HLEN(p->ip4h) * 4);
 
-    if (p->icmpv4vars.comp_csum == p->icmpv4h->checksum && cd->valid == 1)
+    if (p->comp_csum == p->icmpv4h->checksum && cd->valid == 1)
         return 1;
-    else if (p->icmpv4vars.comp_csum != p->icmpv4h->checksum && cd->valid == 0)
+    else if (p->comp_csum != p->icmpv4h->checksum && cd->valid == 0)
         return 1;
     else
         return 0;
@@ -814,14 +814,14 @@ int DetectICMPV6CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
         return cd->valid;
     }
 
-    if (p->icmpv6vars.comp_csum == -1)
-        p->icmpv6vars.comp_csum = ICMPV6CalculateChecksum(p->ip6h->s_ip6_addrs,
+    if (p->comp_csum == -1)
+        p->comp_csum = ICMPV6CalculateChecksum(p->ip6h->s_ip6_addrs,
                                                           (uint16_t *)p->icmpv6h,
                                                           GET_PKT_LEN(p) - ((uint8_t *)p->icmpv6h - GET_PKT_DATA(p)));
 
-    if (p->icmpv6vars.comp_csum == p->icmpv6h->csum && cd->valid == 1)
+    if (p->comp_csum == p->icmpv6h->csum && cd->valid == 1)
         return 1;
-    else if (p->icmpv6vars.comp_csum != p->icmpv6h->csum && cd->valid == 0)
+    else if (p->comp_csum != p->icmpv6h->csum && cd->valid == 0)
         return 1;
     else
         return 0;
index 24457f8b77bf1f03bbb9045296a9991fc8667009..2e57f877866c4a4448486770c7e7a5b23a6fece4 100644 (file)
@@ -6560,8 +6560,8 @@ int SigTest24IPV4Keyword(void)
     p1->pkt = (uint8_t *)(p1 + 1);
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
-    p1->ip4vars.comp_csum = -1;
-    p2->ip4vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
+    PACKET_RESET_CHECKSUMS(p2);
 
     p1->ip4h = (IPV4Hdr *)valid_raw_ipv4;
 
@@ -6666,8 +6666,8 @@ int SigTest25NegativeIPV4Keyword(void)
     p1->pkt = (uint8_t *)(p1 + 1);
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
-    p1->ip4vars.comp_csum = -1;
-    p2->ip4vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
+    PACKET_RESET_CHECKSUMS(p2);
 
     p1->ip4h = (IPV4Hdr *)valid_raw_ipv4;
 
@@ -6783,7 +6783,7 @@ int SigTest26TCPV4Keyword(void)
     PacketCopyData(p2, raw_ipv4, sizeof(raw_ipv4));
     PacketCopyDataOffset(p2, GET_PKT_LEN(p2), invalid_raw_tcp, sizeof(invalid_raw_tcp));
 
-    p1->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip4h = (IPV4Hdr *)GET_PKT_DATA(p1);
     p1->tcph = (TCPHdr *)(GET_PKT_DATA(p1) + sizeof(raw_ipv4));
     p1->src.family = AF_INET;
@@ -6792,7 +6792,7 @@ int SigTest26TCPV4Keyword(void)
     p1->payload_len = 20;
     p1->proto = IPPROTO_TCP;
 
-    p2->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip4h = (IPV4Hdr *)GET_PKT_DATA(p2);
     p2->tcph = (TCPHdr *)(GET_PKT_DATA(p2) + sizeof(raw_ipv4));
     p2->src.family = AF_INET;
@@ -6900,7 +6900,6 @@ static int SigTest26TCPV4AndNegativeIPV4Keyword(void)
     PacketCopyDataOffset(p2, GET_PKT_LEN(p2), invalid_raw_tcp, sizeof(invalid_raw_tcp));
 
     PACKET_RESET_CHECKSUMS(p1);
-    p1->tcpvars.comp_csum = -1;
     p1->ip4h = (IPV4Hdr *)GET_PKT_DATA(p1);
     p1->tcph = (TCPHdr *)(GET_PKT_DATA(p1) + sizeof(raw_ipv4));
     p1->src.family = AF_INET;
@@ -7144,7 +7143,7 @@ static int SigTest27NegativeTCPV4Keyword(void)
     PacketCopyData(p2, raw_ipv4, sizeof(raw_ipv4));
     PacketCopyDataOffset(p2, GET_PKT_LEN(p2), invalid_raw_tcp, sizeof(invalid_raw_tcp));
 
-    p1->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip4h = (IPV4Hdr *)GET_PKT_DATA(p1);
     p1->tcph = (TCPHdr *)(GET_PKT_DATA(p1) + sizeof(raw_ipv4));
     p1->src.family = AF_INET;
@@ -7153,7 +7152,7 @@ static int SigTest27NegativeTCPV4Keyword(void)
     p1->payload_len = 20;
     p1->proto = IPPROTO_TCP;
 
-    p2->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip4h = (IPV4Hdr *)GET_PKT_DATA(p2);
     p2->tcph = (TCPHdr *)(GET_PKT_DATA(p2) + sizeof(raw_ipv4));
     p2->src.family = AF_INET;
@@ -7266,7 +7265,7 @@ int SigTest28TCPV6Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip6h = (IPV6Hdr *)(valid_raw_ipv6 + 14);
     p1->tcph = (TCPHdr *) (valid_raw_ipv6 + 54);
     p1->src.family = AF_INET;
@@ -7279,7 +7278,7 @@ int SigTest28TCPV6Keyword(void)
         BUG_ON(1);
     }
 
-    p2->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip6h = (IPV6Hdr *)(invalid_raw_ipv6 + 14);
     p2->tcph = (TCPHdr *) (invalid_raw_ipv6 + 54);
     p2->src.family = AF_INET;
@@ -7396,7 +7395,7 @@ int SigTest29NegativeTCPV6Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip6h = (IPV6Hdr *)(valid_raw_ipv6 + 14);
     p1->tcph = (TCPHdr *) (valid_raw_ipv6 + 54);
     p1->src.family = AF_INET;
@@ -7409,7 +7408,7 @@ int SigTest29NegativeTCPV6Keyword(void)
         BUG_ON(1);
     }
 
-    p2->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip6h = (IPV6Hdr *)(invalid_raw_ipv6 + 14);
     p2->tcph = (TCPHdr *) (invalid_raw_ipv6 + 54);
     p2->src.family = AF_INET;
@@ -7524,7 +7523,7 @@ int SigTest30UDPV4Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->udpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip4h = (IPV4Hdr *)raw_ipv4;
     p1->udph = (UDPHdr *)valid_raw_udp;
     p1->src.family = AF_INET;
@@ -7533,7 +7532,7 @@ int SigTest30UDPV4Keyword(void)
     p1->payload_len = sizeof(valid_raw_udp) - UDP_HEADER_LEN;
     p1->proto = IPPROTO_UDP;
 
-    p2->udpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip4h = (IPV4Hdr *)raw_ipv4;
     p2->udph = (UDPHdr *)invalid_raw_udp;
     p2->src.family = AF_INET;
@@ -7649,7 +7648,7 @@ int SigTest31NegativeUDPV4Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->udpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip4h = (IPV4Hdr *)raw_ipv4;
     p1->udph = (UDPHdr *)valid_raw_udp;
     p1->src.family = AF_INET;
@@ -7658,7 +7657,7 @@ int SigTest31NegativeUDPV4Keyword(void)
     p1->payload_len = sizeof(valid_raw_udp) - UDP_HEADER_LEN;
     p1->proto = IPPROTO_UDP;
 
-    p2->udpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip4h = (IPV4Hdr *)raw_ipv4;
     p2->udph = (UDPHdr *)invalid_raw_udp;
     p2->src.family = AF_INET;
@@ -7768,7 +7767,7 @@ int SigTest32UDPV6Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->udpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip6h = (IPV6Hdr *)(valid_raw_ipv6 + 14);
     p1->udph = (UDPHdr *) (valid_raw_ipv6 + 54);
     p1->src.family = AF_INET;
@@ -7777,7 +7776,7 @@ int SigTest32UDPV6Keyword(void)
     p1->payload_len = IPV6_GET_PLEN((p1)) - UDP_HEADER_LEN;
     p1->proto = IPPROTO_UDP;
 
-    p2->udpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip6h = (IPV6Hdr *)(invalid_raw_ipv6 + 14);
     p2->udph = (UDPHdr *) (invalid_raw_ipv6 + 54);
     p2->src.family = AF_INET;
@@ -7885,7 +7884,7 @@ int SigTest33NegativeUDPV6Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->udpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip6h = (IPV6Hdr *)(valid_raw_ipv6 + 14);
     p1->udph = (UDPHdr *) (valid_raw_ipv6 + 54);
     p1->src.family = AF_INET;
@@ -7894,7 +7893,7 @@ int SigTest33NegativeUDPV6Keyword(void)
     p1->payload_len = IPV6_GET_PLEN((p1)) - UDP_HEADER_LEN;
     p1->proto = IPPROTO_UDP;
 
-    p2->udpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip6h = (IPV6Hdr *)(invalid_raw_ipv6 + 14);
     p2->udph = (UDPHdr *) (invalid_raw_ipv6 + 54);
     p2->src.family = AF_INET;
@@ -8005,7 +8004,7 @@ int SigTest34ICMPV4Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->icmpv4vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip4h = (IPV4Hdr *)(valid_raw_ipv4);
     p1->ip4h->ip_verhl = 69;
     p1->icmpv4h = (ICMPV4Hdr *) (valid_raw_ipv4 + IPV4_GET_RAW_HLEN(p1->ip4h) * 4);
@@ -8015,7 +8014,7 @@ int SigTest34ICMPV4Keyword(void)
     p1->payload_len = buflen;
     p1->proto = IPPROTO_ICMP;
 
-    p2->icmpv4vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip4h = (IPV4Hdr *)(invalid_raw_ipv4);
     p2->ip4h->ip_verhl = 69;
     p2->icmpv4h = (ICMPV4Hdr *) (invalid_raw_ipv4 + IPV4_GET_RAW_HLEN(p2->ip4h) * 4);
@@ -8127,7 +8126,7 @@ int SigTest35NegativeICMPV4Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->icmpv4vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip4h = (IPV4Hdr *)(valid_raw_ipv4);
     p1->ip4h->ip_verhl = 69;
     p1->icmpv4h = (ICMPV4Hdr *) (valid_raw_ipv4 + IPV4_GET_RAW_HLEN(p1->ip4h) * 4);
@@ -8137,7 +8136,7 @@ int SigTest35NegativeICMPV4Keyword(void)
     p1->payload_len = buflen;
     p1->proto = IPPROTO_ICMP;
 
-    p2->icmpv4vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip4h = (IPV4Hdr *)(invalid_raw_ipv4);
     p2->ip4h->ip_verhl = 69;
     p2->icmpv4h = (ICMPV4Hdr *) (invalid_raw_ipv4 + IPV4_GET_RAW_HLEN(p2->ip4h) * 4);
@@ -8260,7 +8259,7 @@ int SigTest36ICMPV6Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->icmpv6vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip6h = (IPV6Hdr *)(valid_raw_ipv6 + 14);
     p1->icmpv6h = (ICMPV6Hdr *) (valid_raw_ipv6 + 54);
     p1->src.family = AF_INET;
@@ -8269,7 +8268,7 @@ int SigTest36ICMPV6Keyword(void)
     p1->payload_len = buflen;
     p1->proto = IPPROTO_ICMPV6;
 
-    p2->icmpv6vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip6h = (IPV6Hdr *)(invalid_raw_ipv6 + 14);
     p2->icmpv6h = (ICMPV6Hdr *) (invalid_raw_ipv6 + 54);
     p2->src.family = AF_INET;
@@ -8390,7 +8389,7 @@ int SigTest37NegativeICMPV6Keyword(void)
     memset(p2, 0, SIZE_OF_PACKET);
     p2->pkt = (uint8_t *)(p2 + 1);
 
-    p1->icmpv6vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ip6h = (IPV6Hdr *)(valid_raw_ipv6 + 14);
     p1->icmpv6h = (ICMPV6Hdr *) (valid_raw_ipv6 + 54);
     p1->src.family = AF_INET;
@@ -8399,7 +8398,7 @@ int SigTest37NegativeICMPV6Keyword(void)
     p1->payload_len = buflen;
     p1->proto = IPPROTO_ICMPV6;
 
-    p2->icmpv6vars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p2);
     p2->ip6h = (IPV6Hdr *)(invalid_raw_ipv6 + 14);
     p2->icmpv6h = (ICMPV6Hdr *) (invalid_raw_ipv6 + 54);
     p2->src.family = AF_INET;
@@ -8525,7 +8524,7 @@ int SigTest38Real(int mpm_type)
     }
     SET_PKT_LEN(p1, ethlen + ipv4len + tcplen + buflen);
 
-    p1->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ethh = (EthernetHdr *)raw_eth;
     p1->ip4h = (IPV4Hdr *)raw_ipv4;
     p1->tcph = (TCPHdr *)raw_tcp;
@@ -8668,7 +8667,7 @@ int SigTest39Real(int mpm_type)
     }
     SET_PKT_LEN(p1, ethlen + ipv4len + tcplen + buflen);
 
-    p1->tcpvars.comp_csum = -1;
+    PACKET_RESET_CHECKSUMS(p1);
     p1->ethh = (EthernetHdr *)raw_eth;
     p1->ip4h = (IPV4Hdr *)raw_ipv4;
     p1->tcph = (TCPHdr *)raw_tcp;
index a709daba96cb55ca76098ea4a9537cc45605074d..203adbc8f2279d3f62d98778ed6f562bb2d61da0 100644 (file)
@@ -4410,21 +4410,21 @@ static inline int StreamTcpValidateChecksum(Packet *p)
     if (p->flags & PKT_IGNORE_CHECKSUM)
         return ret;
 
-    if (p->tcpvars.comp_csum == -1) {
+    if (p->comp_csum == -1) {
         if (PKT_IS_IPV4(p)) {
-            p->tcpvars.comp_csum = TCPCalculateChecksum(p->ip4h->s_ip_addrs,
-                                                 (uint16_t *)p->tcph,
-                                                 (p->payload_len +
-                                                  TCP_GET_HLEN(p)));
+            p->comp_csum = TCPCalculateChecksum(p->ip4h->s_ip_addrs,
+                                                (uint16_t *)p->tcph,
+                                                (p->payload_len +
+                                                 TCP_GET_HLEN(p)));
         } else if (PKT_IS_IPV6(p)) {
-            p->tcpvars.comp_csum = TCPV6CalculateChecksum(p->ip6h->s_ip6_addrs,
-                                                   (uint16_t *)p->tcph,
-                                                   (p->payload_len +
-                                                    TCP_GET_HLEN(p)));
+            p->comp_csum = TCPV6CalculateChecksum(p->ip6h->s_ip6_addrs,
+                                                  (uint16_t *)p->tcph,
+                                                  (p->payload_len +
+                                                   TCP_GET_HLEN(p)));
         }
     }
 
-    if (p->tcpvars.comp_csum != p->tcph->th_sum) {
+    if (p->comp_csum != p->tcph->th_sum) {
         ret = 0;
         SCLogDebug("Checksum of received packet %p is invalid",p);
         if (p->livedev) {