Go to the documentation of this file.
30 #ifndef SURICATA_UTIL_VALIDATE_H
31 #define SURICATA_UTIL_VALIDATE_H
33 #ifdef DEBUG_VALIDATION
40 #define DEBUG_ASSERT_FLOW_LOCKED(f) do { \
42 int r = SCMutexTrylock(&(f)->m); \
53 #define DEBUG_VALIDATE_FLOW(f) do { \
55 BUG_ON((f)->flags & FLOW_IPV4 && \
56 (f)->flags & FLOW_IPV6); \
57 if ((f)->proto == IPPROTO_TCP) { \
58 BUG_ON((f)->alstate != NULL && \
59 (f)->alparser == NULL); \
68 #define DEBUG_VALIDATE_PACKET(p) do { \
70 if ((p)->flow != NULL) { \
71 DEBUG_VALIDATE_FLOW((p)->flow); \
73 if (!((p)->flags & (PKT_IS_FRAGMENT|PKT_IS_INVALID))) { \
74 if ((p)->proto == IPPROTO_TCP) { \
75 BUG_ON((p)->tcph == NULL); \
76 } else if ((p)->proto == IPPROTO_UDP) { \
77 BUG_ON((p)->udph == NULL); \
78 } else if ((p)->proto == IPPROTO_ICMP) { \
79 BUG_ON((p)->icmpv4h == NULL); \
80 } else if ((p)->proto == IPPROTO_SCTP) { \
81 BUG_ON((p)->sctph == NULL); \
82 } else if ((p)->proto == IPPROTO_ICMPV6) { \
83 BUG_ON((p)->icmpv6h == NULL); \
86 if ((p)->payload_len > 0) { \
87 BUG_ON((p)->payload == NULL); \
89 BUG_ON((p)->ip4h != NULL && (p)->ip6h != NULL); \
90 BUG_ON((p)->flowflags != 0 && (p)->flow == NULL); \
91 BUG_ON((p)->flowflags & FLOW_PKT_TOSERVER &&\
92 (p)->flowflags & FLOW_PKT_TOCLIENT); \
96 #define DEBUG_VALIDATE_BUG_ON(exp) BUG_ON((exp))
100 #define DEBUG_ASSERT_FLOW_LOCKED(f)
101 #define DEBUG_VALIDATE_FLOW(f)
102 #define DEBUG_VALIDATE_PACKET(p)
103 #define DEBUG_VALIDATE_BUG_ON(exp)