]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
source/pcap: fix infinite loop if interface goes down
authorJuliana Fajardini <jufajardini@oisf.net>
Tue, 28 Jun 2022 20:06:50 +0000 (17:06 -0300)
committerVictor Julien <vjulien@oisf.net>
Wed, 29 Jun 2022 07:25:33 +0000 (09:25 +0200)
When in live-pcap mode, if the sniffed interface went down and up again,
Suri would enter an infinite and keep running, while not registering new
events. This fixes that behavior by allowing Suri to retry to open the
pcap in case of a retry on an already activated capture
('PCAP_ERROR_ACTIVATED').

This change is based on Zhiyuan Liao's work.

Bug #3846

src/source-pcap.c

index 2ffbf33d5ed9933ee6205a2882a83dffeb456c95..97b2085cdc52f495cc575960622bf5b9c25c3e14 100644 (file)
@@ -208,7 +208,7 @@ static int PcapTryReopen(PcapThreadVars *ptv)
     ptv->pcap_state = PCAP_STATE_DOWN;
 
     int pcap_activate_r = pcap_activate(ptv->pcap_handle);
-    if (pcap_activate_r != 0) {
+    if (pcap_activate_r != 0 && pcap_activate_r != PCAP_ERROR_ACTIVATED) {
         return pcap_activate_r;
     }