]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
decode-icmpv6: use FAIL macros in tests
authorJason Ish <ish@unx.ca>
Mon, 5 Sep 2016 14:15:46 +0000 (08:15 -0600)
committerVictor Julien <victor@inliniac.net>
Mon, 5 Sep 2016 15:13:20 +0000 (17:13 +0200)
src/decode-icmpv6.c

index 75da935bfac89c8ca8a8136f1fab57f1b386ae5b..fc82d5949353082df2900e8a581b244d91612487 100644 (file)
@@ -393,8 +393,9 @@ static int ICMPV6CalculateValidChecksumtest01(void)
 
     csum = *( ((uint16_t *)(raw_ipv6 + 56)));
 
-    return (csum == ICMPV6CalculateChecksum((uint16_t *)(raw_ipv6 + 14 + 8),
+    FAIL_IF(csum != ICMPV6CalculateChecksum((uint16_t *)(raw_ipv6 + 14 + 8),
                                             (uint16_t *)(raw_ipv6 + 54), 68));
+    PASS;
 }
 
 static int ICMPV6CalculateInvalidChecksumtest02(void)
@@ -421,18 +422,17 @@ static int ICMPV6CalculateInvalidChecksumtest02(void)
 
     csum = *( ((uint16_t *)(raw_ipv6 + 56)));
 
-    return (csum != ICMPV6CalculateChecksum((uint16_t *)(raw_ipv6 + 14 + 8),
+    FAIL_IF(csum == ICMPV6CalculateChecksum((uint16_t *)(raw_ipv6 + 14 + 8),
                                             (uint16_t *)(raw_ipv6 + 54), 68));
+    PASS;
 }
 
-
 /** \test icmpv6 message type: parameter problem, valid packet
  *
  * \retval retval 0 = Error ; 1 = ok
  */
 static int ICMPV6ParamProbTest01(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -448,8 +448,7 @@ static int ICMPV6ParamProbTest01(void)
         0x80, 0x00, 0x08, 0xb5, 0x99, 0xc3, 0xde, 0x40 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -466,37 +465,23 @@ static int ICMPV6ParamProbTest01(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->icmpv6h == NULL) {
-        SCLogDebug("ICMPv6 Unable to detect icmpv6 layer from ipv6");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(p->icmpv6h == NULL);
 
-    if (ICMPV6_GET_TYPE(p) != 4 || ICMPV6_GET_CODE(p) != 0 ||
-        ICMPV6_GET_EMB_PROTO(p) != IPPROTO_ICMPV6) {
-        SCLogDebug("ICMPv6 not processed at all");
-        retval = 0;
-        goto end;
-    }
+    /* ICMPv6 not processed at all? */
+    FAIL_IF(ICMPV6_GET_TYPE(p) != 4 || ICMPV6_GET_CODE(p) != 0 ||
+        ICMPV6_GET_EMB_PROTO(p) != IPPROTO_ICMPV6);
 
     /* Let's check if we retrieved the embedded ipv6 addresses correctly */
     uint32_t i=0;
     for (i = 0; i < 4; i++) {
-        if (p->icmpv6vars.emb_ip6_src[i] != ipv6src[i] ||
-            p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]) {
-            SCLogDebug("ICMPv6 DecodePartialICMPV6 (Embedded ip6h) didn't set "
-                       "the src and dest ip addresses correctly");
-            retval = 0;
-            goto end;
-        }
+        FAIL_IF(p->icmpv6vars.emb_ip6_src[i] != ipv6src[i] ||
+            p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]);
     }
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /** \test icmpv6 message type: packet too big, valid packet
@@ -505,7 +490,6 @@ end:
  */
 static int ICMPV6PktTooBigTest01(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -520,8 +504,7 @@ static int ICMPV6PktTooBigTest01(void)
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -538,39 +521,26 @@ static int ICMPV6PktTooBigTest01(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->icmpv6h == NULL) {
-        SCLogDebug("ICMPv6 Unable to detect icmpv6 layer from ipv6");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(p->icmpv6h == NULL);
 
-    /* Note: it has an embedded ipv6 packet but no protocol after ipv6 (IPPROTO_NONE) */
-    if (ICMPV6_GET_TYPE(p) != 2 || ICMPV6_GET_CODE(p) != 0 ) {
-        SCLogDebug("ICMPv6 Not processed at all");
-        retval = 0;
-        goto end;
-    }
+    /* Note: it has an embedded ipv6 packet but no protocol after ipv6
+     * (IPPROTO_NONE) */
+    /* Check if ICMPv6 header was processed at all. */
+    FAIL_IF(ICMPV6_GET_TYPE(p) != 2 || ICMPV6_GET_CODE(p) != 0 );
 
     /* Let's check if we retrieved the embedded ipv6 addresses correctly */
     uint32_t i=0;
     for (i = 0; i < 4; i++) {
-        if (p->icmpv6vars.emb_ip6_src[i] != ipv6src[i] ||
-            p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]) {
-            SCLogDebug("ICMPv6 DecodePartialICMPV6 (Embedded ip6h) didn't set "
-                       "the src and dest ip addresses correctly");
-            retval = 0;
-            goto end;
-        }
+        FAIL_IF(p->icmpv6vars.emb_ip6_src[i] != ipv6src[i] ||
+            p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]);
     }
 
     SCLogDebug("ICMPV6 IPV6 src and dst properly set");
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /** \test icmpv6 message type: time exceed, valid packet
@@ -579,7 +549,6 @@ end:
  */
 static int ICMPV6TimeExceedTest01(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -594,8 +563,7 @@ static int ICMPV6TimeExceedTest01(void)
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -604,7 +572,6 @@ static int ICMPV6TimeExceedTest01(void)
     ipv6src = (uint32_t*) &raw_ipv6[8];
     ipv6dst = (uint32_t*) &raw_ipv6[24];
 
-
     memset(&tv, 0, sizeof(ThreadVars));
     memset(p, 0, SIZE_OF_PACKET);
     memset(&dtv, 0, sizeof(DecodeThreadVars));
@@ -613,40 +580,26 @@ static int ICMPV6TimeExceedTest01(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->icmpv6h == NULL) {
-        SCLogDebug("ICMPv6 Unable to detect icmpv6 layer from ipv6");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF_NULL(p->icmpv6h);
 
     /* Note: it has an embedded ipv6 packet but no protocol after ipv6 (IPPROTO_NONE) */
-    if (ICMPV6_GET_TYPE(p) != 3 || ICMPV6_GET_CODE(p) != 0 ||
-        ICMPV6_GET_EMB_IPV6(p)==NULL || ICMPV6_GET_EMB_PROTO(p) != IPPROTO_NONE ) {
-        SCLogDebug("ICMPv6 Not processed at all");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(ICMPV6_GET_TYPE(p) != 3 || ICMPV6_GET_CODE(p) != 0 ||
+        ICMPV6_GET_EMB_IPV6(p) == NULL ||
+        ICMPV6_GET_EMB_PROTO(p) != IPPROTO_NONE);
 
     /* Let's check if we retrieved the embedded ipv6 addresses correctly */
     uint32_t i=0;
     for (i = 0; i < 4; i++) {
-        if (p->icmpv6vars.emb_ip6_src[i] != ipv6src[i] ||
-            p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]) {
-            SCLogDebug("ICMPv6 DecodePartialICMPV6 (Embedded ip6h) didn't set "
-                       "the src and dest ip addresses correctly");
-            retval = 0;
-            goto end;
-        }
+        FAIL_IF(p->icmpv6vars.emb_ip6_src[i] != ipv6src[i] ||
+            p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]);
     }
 
     SCLogDebug("ICMPV6 IPV6 src and dst properly set");
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /** \test icmpv6 message type: destination unreach, valid packet
@@ -655,7 +608,6 @@ end:
  */
 static int ICMPV6DestUnreachTest01(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -670,8 +622,7 @@ static int ICMPV6DestUnreachTest01(void)
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -680,7 +631,6 @@ static int ICMPV6DestUnreachTest01(void)
     ipv6src = (uint32_t*) &raw_ipv6[8];
     ipv6dst = (uint32_t*) &raw_ipv6[24];
 
-
     memset(&tv, 0, sizeof(ThreadVars));
     memset(p, 0, SIZE_OF_PACKET);
     memset(&dtv, 0, sizeof(DecodeThreadVars));
@@ -689,38 +639,24 @@ static int ICMPV6DestUnreachTest01(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->icmpv6h == NULL) {
-        SCLogDebug("ICMPv6 Unable to detect icmpv6 layer from ipv6");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF_NULL(p->icmpv6h);
 
     /* Note: it has an embedded ipv6 packet but no protocol after ipv6 (IPPROTO_NONE) */
-    if (ICMPV6_GET_TYPE(p) != 1 || ICMPV6_GET_CODE(p) != 0 ||
-        ICMPV6_GET_EMB_IPV6(p) == NULL || ICMPV6_GET_EMB_PROTO(p) != IPPROTO_NONE ) {
-        SCLogDebug("ICMPv6 Not processed at all");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(ICMPV6_GET_TYPE(p) != 1 || ICMPV6_GET_CODE(p) != 0 ||
+        ICMPV6_GET_EMB_IPV6(p) == NULL ||
+        ICMPV6_GET_EMB_PROTO(p) != IPPROTO_NONE);
 
     /* Let's check if we retrieved the embedded ipv6 addresses correctly */
     uint32_t i=0;
     for (i = 0; i < 4; i++) {
-        if (p->icmpv6vars.emb_ip6_src[i] != ipv6src[i] ||
-            p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]) {
-            SCLogDebug("ICMPv6 DecodePartialICMPV6 (Embedded ip6h) didn't set "
-                       "the src and dest ip addresses correctly");
-            retval = 0;
-            goto end;
-        }
+        FAIL_IF(p->icmpv6vars.emb_ip6_src[i] != ipv6src[i] ||
+            p->icmpv6vars.emb_ip6_dst[i] != ipv6dst[i]);
     }
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /**\test icmpv6 message type: echo request, valid packet
@@ -728,7 +664,6 @@ end:
  */
 static int ICMPV6EchoReqTest01(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -738,8 +673,7 @@ static int ICMPV6EchoReqTest01(void)
         0x80, 0x00, 0xe5, 0xa5, 0x25, 0xf0, 0x75, 0x23 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -752,10 +686,7 @@ static int ICMPV6EchoReqTest01(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->icmpv6h == NULL) {
-        SCLogDebug("ICMPv6 Unable to detect icmpv6 layer from ipv6");
-        goto end;
-    }
+    FAIL_IF_NULL(p->icmpv6h);
 
     SCLogDebug("ID: %u seq: %u", ICMPV6_GET_ID(p), ICMPV6_GET_SEQ(p));
 
@@ -764,15 +695,13 @@ static int ICMPV6EchoReqTest01(void)
         printf("ICMPv6 Echo reply decode failed TYPE %u CODE %u ID %04x(%u) SEQ %04x(%u): ",
                 ICMPV6_GET_TYPE(p), ICMPV6_GET_CODE(p), ICMPV6_GET_ID(p), ntohs(ICMPV6_GET_ID(p)),
                 ICMPV6_GET_SEQ(p), ntohs(ICMPV6_GET_SEQ(p)));
-        goto end;
+        FAIL;
     }
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /**\test icmpv6 message type: echo reply, valid packet
@@ -780,7 +709,6 @@ end:
  */
 static int ICMPV6EchoRepTest01(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a,
         0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -791,8 +719,7 @@ static int ICMPV6EchoRepTest01(void)
         0xe5, 0xa5, 0x25, 0xf0, 0x75, 0x23 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -805,10 +732,7 @@ static int ICMPV6EchoRepTest01(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->icmpv6h == NULL) {
-        SCLogDebug("ICMPv6 Unable to detect icmpv6 layer from ipv6");
-        goto end;
-    }
+    FAIL_IF_NULL(p->icmpv6h);
 
     SCLogDebug("type: %u code %u ID: %u seq: %u", ICMPV6_GET_TYPE(p),
                ICMPV6_GET_CODE(p),ICMPV6_GET_ID(p), ICMPV6_GET_SEQ(p));
@@ -818,15 +742,13 @@ static int ICMPV6EchoRepTest01(void)
         printf("ICMPv6 Echo reply decode failed TYPE %u CODE %u ID %04x(%u) SEQ %04x(%u): ",
                 ICMPV6_GET_TYPE(p), ICMPV6_GET_CODE(p), ICMPV6_GET_ID(p), ntohs(ICMPV6_GET_ID(p)),
                 ICMPV6_GET_SEQ(p), ntohs(ICMPV6_GET_SEQ(p)));
-        goto end;
+        FAIL;
     }
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /** \test icmpv6 message type: parameter problem, invalid packet
@@ -835,7 +757,6 @@ end:
  */
 static int ICMPV6ParamProbTest02(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -851,8 +772,7 @@ static int ICMPV6ParamProbTest02(void)
         0x80, 0x00, 0x08, 0xb5, 0x99, 0xc3, 0xde, 0x40 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -865,30 +785,14 @@ static int ICMPV6ParamProbTest02(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->icmpv6h == NULL) {
-        SCLogDebug("ICMPv6 Unable to detect icmpv6 layer from ipv6");
-        retval = 0;
-        goto end;
-    }
-
-    if (ICMPV6_GET_TYPE(p) != 4 || ICMPV6_GET_CODE(p) != 0) {
-        SCLogDebug("ICMPv6 Not processed at all");
-        retval = 0;
-        goto end;
-    }
-
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_IPV6_UNKNOWN_VER)) {
-        SCLogDebug("ICMPv6 Error: Unknown embedded ipv6 version event not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF_NULL(p->icmpv6h);
+    FAIL_IF(ICMPV6_GET_TYPE(p) != 4 || ICMPV6_GET_CODE(p) != 0);
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_IPV6_UNKNOWN_VER));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /** \test icmpv6 message type: packet too big, invalid packet
@@ -897,7 +801,6 @@ end:
  */
 static int ICMPV6PktTooBigTest02(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -912,8 +815,7 @@ static int ICMPV6PktTooBigTest02(void)
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -926,24 +828,13 @@ static int ICMPV6PktTooBigTest02(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->icmpv6h == NULL) {
-        SCLogDebug("ICMPv6 Unable to detect icmpv6 layer from ipv6");
-        retval = 0;
-        goto end;
-    }
-
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF_NULL(p->icmpv6h);
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /** \test icmpv6 message type: time exceed, invalid packet
@@ -952,7 +843,6 @@ end:
  */
 static int ICMPV6TimeExceedTest02(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -964,8 +854,7 @@ static int ICMPV6TimeExceedTest02(void)
     /* The icmpv6 header is broken in the checksum (so we dont have a complete header) */
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -978,18 +867,12 @@ static int ICMPV6TimeExceedTest02(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_PKT_TOO_SMALL)) {
-        SCLogDebug("ICMPv6 Error: event packet too small not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_PKT_TOO_SMALL));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /**\test icmpv6 message type: destination unreach, invalid packet
@@ -998,7 +881,6 @@ end:
  */
 static int ICMPV6DestUnreachTest02(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1013,8 +895,7 @@ static int ICMPV6DestUnreachTest02(void)
         0x00, 0x00, 0x00, 0x00, 0x00 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1027,18 +908,12 @@ static int ICMPV6DestUnreachTest02(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_IPV6_TRUNC_PKT)) {
-        SCLogDebug("ICMPv6 Error: embedded ipv6 truncated packet event not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_IPV6_TRUNC_PKT));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /**\test icmpv6 message type: echo request, invalid packet
@@ -1047,7 +922,6 @@ end:
  */
 static int ICMPV6EchoReqTest02(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a,
         0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1058,8 +932,7 @@ static int ICMPV6EchoReqTest02(void)
         0xe5, 0xa5, 0x25, 0xf0, 0x75, 0x23 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1072,18 +945,12 @@ static int ICMPV6EchoReqTest02(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /**\test icmpv6 message type: echo reply, invalid packet
@@ -1092,7 +959,6 @@ end:
  */
 static int ICMPV6EchoRepTest02(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a,
         0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1103,8 +969,7 @@ static int ICMPV6EchoRepTest02(void)
         0xe5, 0xa5, 0x25, 0xf0, 0x75, 0x23 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1117,18 +982,12 @@ static int ICMPV6EchoRepTest02(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /**\test icmpv6 packet decoding and setting up of payload_len and payload buufer
@@ -1136,7 +995,6 @@ end:
  */
 static int ICMPV6PayloadTest01(void)
 {
-    int retval = 0;
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x3a, 0xff,
         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1151,8 +1009,7 @@ static int ICMPV6PayloadTest01(void)
         0x00, 0x00, 0x00, 0x00, 0x00 };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1165,28 +1022,17 @@ static int ICMPV6PayloadTest01(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (p->payload == NULL) {
-        printf("payload == NULL, expected non-NULL: ");
-        goto end;
-    }
+    FAIL_IF_NULL(p->payload);
+    FAIL_IF(p->payload_len != 37);
 
-    if (p->payload_len != 37) {
-        printf("payload_len %"PRIu16", expected 37: ", p->payload_len);
-        goto end;
-    }
-
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6RouterSolicitTestKnownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1197,8 +1043,7 @@ static int ICMPV6RouterSolicitTestKnownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1211,24 +1056,16 @@ static int ICMPV6RouterSolicitTestKnownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6RouterSolicitTestUnknownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1239,8 +1076,7 @@ static int ICMPV6RouterSolicitTestUnknownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1253,24 +1089,16 @@ static int ICMPV6RouterSolicitTestUnknownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6RouterAdvertTestKnownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1281,8 +1109,7 @@ static int ICMPV6RouterAdvertTestKnownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1295,24 +1122,16 @@ static int ICMPV6RouterAdvertTestKnownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6RouterAdvertTestUnknownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1323,8 +1142,7 @@ static int ICMPV6RouterAdvertTestUnknownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1337,24 +1155,16 @@ static int ICMPV6RouterAdvertTestUnknownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6NeighbourSolicitTestKnownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1365,8 +1175,7 @@ static int ICMPV6NeighbourSolicitTestKnownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1379,24 +1188,16 @@ static int ICMPV6NeighbourSolicitTestKnownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6NeighbourSolicitTestUnknownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1407,8 +1208,7 @@ static int ICMPV6NeighbourSolicitTestUnknownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1421,24 +1221,16 @@ static int ICMPV6NeighbourSolicitTestUnknownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6NeighbourAdvertTestKnownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1449,8 +1241,7 @@ static int ICMPV6NeighbourAdvertTestKnownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1463,24 +1254,16 @@ static int ICMPV6NeighbourAdvertTestKnownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6NeighbourAdvertTestUnknownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1491,8 +1274,7 @@ static int ICMPV6NeighbourAdvertTestUnknownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1505,24 +1287,16 @@ static int ICMPV6NeighbourAdvertTestUnknownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6RedirectTestKnownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1533,8 +1307,7 @@ static int ICMPV6RedirectTestKnownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1547,24 +1320,16 @@ static int ICMPV6RedirectTestKnownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 static int ICMPV6RedirectTestUnknownCode(void)
 {
-    int retval = 0;
-
     static uint8_t raw_ipv6[] = {
         0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x3a, 0xff,
         0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1575,8 +1340,7 @@ static int ICMPV6RedirectTestUnknownCode(void)
     };
 
     Packet *p = SCMalloc(SIZE_OF_PACKET);
-    if (unlikely(p == NULL))
-        return 0;
+    FAIL_IF_NULL(p);
     IPV6Hdr ip6h;
     ThreadVars tv;
     DecodeThreadVars dtv;
@@ -1589,18 +1353,12 @@ static int ICMPV6RedirectTestUnknownCode(void)
     FlowInitConfig(FLOW_QUIET);
     DecodeIPV6(&tv, &dtv, p, raw_ipv6, sizeof(raw_ipv6), NULL);
 
-    if (!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE)) {
-        SCLogDebug("ICMPv6 Error: Unknown code event is not set");
-        retval = 0;
-        goto end;
-    }
+    FAIL_IF(!ENGINE_ISSET_EVENT(p, ICMPV6_UNKNOWN_CODE));
 
-    retval = 1;
-end:
     PACKET_RECYCLE(p);
     FlowShutdown();
     SCFree(p);
-    return retval;
+    PASS;
 }
 
 /**