Improve debug validation code for packet, add new macro for flow.

remotes/origin/master-1.2.x
Victor Julien 14 years ago
parent 3009429e3c
commit 49d6885ec7

@ -33,33 +33,56 @@
#ifdef DEBUG_VALIDATION
/** \brief validate the integrity of the flow
*
* BUG_ON's on problems
*/
#define DEBUG_VALIDATE_FLOW(f) do { \
if ((f) != NULL) { \
SCMutexLock(&(f)->m); \
BUG_ON((f)->flags & FLOW_IPV4 && \
(f)->flags & FLOW_IPV6); \
if ((f)->proto == IPPROTO_TCP) { \
BUG_ON((f)->alstate != NULL && \
(f)->alparser == NULL); \
} \
SCMutexUnlock(&(f)->m); \
} \
} while(0)
/** \brief validate the integrity of the packet
*
* BUG_ON's on problems
*/
#define DEBUG_VALIDATE_PACKET(p) do { \
if ((p) != NULL) { \
if ((p)->proto == IPPROTO_TCP) { \
BUG_ON((p)->tcph == NULL); \
} else if ((p)->proto == IPPROTO_UDP) { \
BUG_ON((p)->udph == NULL); \
} else if ((p)->proto == IPPROTO_ICMP) { \
BUG_ON((p)->icmpv4h == NULL); \
} else if ((p)->proto == IPPROTO_SCTP) { \
BUG_ON((p)->sctph == NULL); \
} else if ((p)->proto == IPPROTO_ICMPV6) { \
BUG_ON((p)->icmpv6h == NULL); \
} \
if ((p)->payload_len > 0) { \
BUG_ON((p)->payload == NULL); \
} \
BUG_ON((p)->ip4h != NULL && (p)->ip6h != NULL); \
BUG_ON((p)->flowflags != 0 && (p)->flow == NULL); \
} \
} while(0)
#define DEBUG_VALIDATE_PACKET(p) do { \
if ((p) != NULL) { \
if ((p)->flow != NULL) { \
DEBUG_VALIDATE_FLOW((p)->flow); \
} \
if ((p)->proto == IPPROTO_TCP) { \
BUG_ON((p)->tcph == NULL); \
} else if ((p)->proto == IPPROTO_UDP) { \
BUG_ON((p)->udph == NULL); \
} else if ((p)->proto == IPPROTO_ICMP) { \
BUG_ON((p)->icmpv4h == NULL); \
} else if ((p)->proto == IPPROTO_SCTP) { \
BUG_ON((p)->sctph == NULL); \
} else if ((p)->proto == IPPROTO_ICMPV6) { \
BUG_ON((p)->icmpv6h == NULL); \
} \
if ((p)->payload_len > 0) { \
BUG_ON((p)->payload == NULL); \
} \
BUG_ON((p)->ip4h != NULL && (p)->ip6h != NULL); \
BUG_ON((p)->flowflags != 0 && (p)->flow == NULL); \
BUG_ON((p)->flowflags & FLOW_PKT_TOSERVER &&\
(p)->flowflags & FLOW_PKT_TOCLIENT); \
} \
} while(0)
#else /* DEBUG_VALIDATE */
#define DEBUG_VALIDATE_FLOW(f)
#define DEBUG_VALIDATE_PACKET(p)
#endif /* DEBUG_VALIDATE */

Loading…
Cancel
Save