static TmEcode DecodeNFQThreadDeinit(ThreadVars *tv, void *data);
static TmEcode NFQSetVerdict(Packet *p);
+static void NFQReleasePacket(Packet *p);
typedef enum NFQMode_ {
NFQ_ACCEPT_MODE,
char *pktdata;
struct nfqnl_msg_packet_hdr *ph;
+ // Early release function -- will be updated once repeat
+ // mode handling has been done
+ p->ReleasePacket = PacketFreeOrRelease;
+
ph = nfq_get_msg_packet_hdr(tb);
if (ph != NULL) {
p->nfq_v.id = SCNtohl(ph->packet_id);
return -1 ;
}
}
+
+ // Switch to full featured release function
+ p->ReleasePacket = NFQReleasePacket;
p->nfq_v.ifi = nfq_get_indev(tb);
p->nfq_v.ifo = nfq_get_outdev(tb);
p->nfq_v.verdicted = 0;
if (nfq_config.bypass_mask) {
p->BypassPacketsFlow = NFQBypassCallback;
}
+
ret = NFQSetupPkt(p, qh, (void *)nfa);
if (ret == -1) {
#ifdef COUNTERS
return 0;
}
- p->ReleasePacket = NFQReleasePacket;
-
#ifdef COUNTERS
NFQQueueVars *q = NFQGetQueue(ntv->nfq_index);
q->pkts++;