log-pcap: remove tunnel locks

The tunnel lock mutex only "protects" the tunnel synchronization,
not the packet data, length or datalink fields.
pull/7445/head
Victor Julien 2 years ago
parent e7ab96c389
commit ebf0629615

@ -424,9 +424,7 @@ static int PcapLogOpenHandles(PcapLogData *pl, const Packet *p)
int datalink = p->datalink;
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
Packet *real_p = p->root;
SCMutexLock(&real_p->tunnel_mutex);
datalink = real_p->datalink;
SCMutexUnlock(&real_p->tunnel_mutex);
}
if (pl->pcap_dead_handle == NULL) {
SCLogDebug("Setting pcap-log link type to %u", datalink);
@ -616,11 +614,9 @@ static int PcapLog (ThreadVars *t, void *thread_data, const Packet *p)
pl->h->ts.tv_usec = p->ts.tv_usec;
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
rp = p->root;
SCMutexLock(&rp->tunnel_mutex);
pl->h->caplen = GET_PKT_LEN(rp);
pl->h->len = GET_PKT_LEN(rp);
len = sizeof(*pl->h) + GET_PKT_LEN(rp);
SCMutexUnlock(&rp->tunnel_mutex);
} else {
pl->h->caplen = GET_PKT_LEN(p);
pl->h->len = GET_PKT_LEN(p);
@ -705,11 +701,9 @@ static int PcapLog (ThreadVars *t, void *thread_data, const Packet *p)
pl->h->ts.tv_usec = p->ts.tv_usec;
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
rp = p->root;
SCMutexLock(&rp->tunnel_mutex);
pl->h->caplen = GET_PKT_LEN(rp);
pl->h->len = GET_PKT_LEN(rp);
len = sizeof(*pl->h) + GET_PKT_LEN(rp);
SCMutexUnlock(&rp->tunnel_mutex);
} else {
pl->h->caplen = GET_PKT_LEN(p);
pl->h->len = GET_PKT_LEN(p);
@ -720,13 +714,11 @@ static int PcapLog (ThreadVars *t, void *thread_data, const Packet *p)
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
rp = p->root;
SCMutexLock(&rp->tunnel_mutex);
#ifdef HAVE_LIBLZ4
ret = PcapWrite(pl, comp, GET_PKT_DATA(rp), len);
#else
ret = PcapWrite(pl, NULL, GET_PKT_DATA(rp), len);
#endif
SCMutexUnlock(&rp->tunnel_mutex);
} else {
#ifdef HAVE_LIBLZ4
ret = PcapWrite(pl, comp, GET_PKT_DATA(p), len);

@ -1,4 +1,4 @@
/* Copyright (C) 2007-2016 Open Information Security Foundation
/* Copyright (C) 2007-2022 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
@ -621,9 +621,7 @@ static void StreamTcpSegmentAddPacketData(
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
Packet *rp = p->root;
SCMutexLock(&rp->tunnel_mutex);
StreamTcpSegmentAddPacketDataDo(seg, rp, p);
SCMutexUnlock(&rp->tunnel_mutex);
} else {
StreamTcpSegmentAddPacketDataDo(seg, p, p);
}

Loading…
Cancel
Save