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 4 years ago
parent e7ab96c389
commit ebf0629615

@ -424,9 +424,7 @@ static int PcapLogOpenHandles(PcapLogData *pl, const Packet *p)
int datalink = p->datalink; int datalink = p->datalink;
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) { if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
Packet *real_p = p->root; Packet *real_p = p->root;
SCMutexLock(&real_p->tunnel_mutex);
datalink = real_p->datalink; datalink = real_p->datalink;
SCMutexUnlock(&real_p->tunnel_mutex);
} }
if (pl->pcap_dead_handle == NULL) { if (pl->pcap_dead_handle == NULL) {
SCLogDebug("Setting pcap-log link type to %u", datalink); 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; pl->h->ts.tv_usec = p->ts.tv_usec;
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) { if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
rp = p->root; rp = p->root;
SCMutexLock(&rp->tunnel_mutex);
pl->h->caplen = GET_PKT_LEN(rp); pl->h->caplen = GET_PKT_LEN(rp);
pl->h->len = GET_PKT_LEN(rp); pl->h->len = GET_PKT_LEN(rp);
len = sizeof(*pl->h) + GET_PKT_LEN(rp); len = sizeof(*pl->h) + GET_PKT_LEN(rp);
SCMutexUnlock(&rp->tunnel_mutex);
} else { } else {
pl->h->caplen = GET_PKT_LEN(p); pl->h->caplen = GET_PKT_LEN(p);
pl->h->len = 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; pl->h->ts.tv_usec = p->ts.tv_usec;
if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) { if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
rp = p->root; rp = p->root;
SCMutexLock(&rp->tunnel_mutex);
pl->h->caplen = GET_PKT_LEN(rp); pl->h->caplen = GET_PKT_LEN(rp);
pl->h->len = GET_PKT_LEN(rp); pl->h->len = GET_PKT_LEN(rp);
len = sizeof(*pl->h) + GET_PKT_LEN(rp); len = sizeof(*pl->h) + GET_PKT_LEN(rp);
SCMutexUnlock(&rp->tunnel_mutex);
} else { } else {
pl->h->caplen = GET_PKT_LEN(p); pl->h->caplen = GET_PKT_LEN(p);
pl->h->len = 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)) { if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
rp = p->root; rp = p->root;
SCMutexLock(&rp->tunnel_mutex);
#ifdef HAVE_LIBLZ4 #ifdef HAVE_LIBLZ4
ret = PcapWrite(pl, comp, GET_PKT_DATA(rp), len); ret = PcapWrite(pl, comp, GET_PKT_DATA(rp), len);
#else #else
ret = PcapWrite(pl, NULL, GET_PKT_DATA(rp), len); ret = PcapWrite(pl, NULL, GET_PKT_DATA(rp), len);
#endif #endif
SCMutexUnlock(&rp->tunnel_mutex);
} else { } else {
#ifdef HAVE_LIBLZ4 #ifdef HAVE_LIBLZ4
ret = PcapWrite(pl, comp, GET_PKT_DATA(p), len); 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 * You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free * 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)) { if (IS_TUNNEL_PKT(p) && !IS_TUNNEL_ROOT_PKT(p)) {
Packet *rp = p->root; Packet *rp = p->root;
SCMutexLock(&rp->tunnel_mutex);
StreamTcpSegmentAddPacketDataDo(seg, rp, p); StreamTcpSegmentAddPacketDataDo(seg, rp, p);
SCMutexUnlock(&rp->tunnel_mutex);
} else { } else {
StreamTcpSegmentAddPacketDataDo(seg, p, p); StreamTcpSegmentAddPacketDataDo(seg, p, p);
} }

Loading…
Cancel
Save