SCReturnPtr(NULL, "Packet");
}
- /* set the root ptr to the lowest layer */
- if (parent->root != NULL)
- p->root = parent->root;
- else
- p->root = parent;
-
/* copy packet and set lenght, proto */
PacketCopyData(p, pkt, len);
p->recursion_level = parent->recursion_level + 1;
p->ts.tv_usec = parent->ts.tv_usec;
p->datalink = DLT_RAW;
+ /* set the root ptr to the lowest layer */
+ if (parent->root != NULL)
+ p->root = parent->root;
+ else
+ p->root = parent;
+
/* tell new packet it's part of a tunnel */
SET_TUNNEL_PKT(p);
GET_PKT_LEN(p), pq, proto);
if (unlikely(ret != TM_ECODE_OK)) {
+ /* Not a tunnel packet, just a pseudo packet */
+ p->root = NULL;
+ UNSET_TUNNEL_PKT(p);
TmqhOutputPacketpool(tv, p);
SCReturnPtr(NULL, "Packet");
}
+
/* tell parent packet it's part of a tunnel */
SET_TUNNEL_PKT(parent);
#define IS_TUNNEL_PKT(p) (((p)->flags & PKT_TUNNEL))
#define SET_TUNNEL_PKT(p) ((p)->flags |= PKT_TUNNEL)
+#define UNSET_TUNNEL_PKT(p) ((p)->flags &= ~PKT_TUNNEL)
#define IS_TUNNEL_ROOT_PKT(p) (IS_TUNNEL_PKT(p) && (p)->root == NULL)
#define IS_TUNNEL_PKT_VERDICTED(p) (((p)->flags & PKT_TUNNEL_VERDICTED))