Skip to content

Capture bypass worker flow timeout v2#15733

Open
adaki4 wants to merge 5 commits into
OISF:mainfrom
adaki4:capture-bypass-worker-flow-timeout-v2
Open

Capture bypass worker flow timeout v2#15733
adaki4 wants to merge 5 commits into
OISF:mainfrom
adaki4:capture-bypass-worker-flow-timeout-v2

Conversation

@adaki4

@adaki4 adaki4 commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

This PR resolves an issue where Suricata does not check the statistics of bypassed flows that have been timed out by workers.

Changes:

SV_BRANCH=OISF/suricata-verify#3195

Links to ticket: 8442

Previous PR: #15331

adaki4 and others added 5 commits June 26, 2026 00:46
This commit forces timeout check of all flows in the flow table at the
shutdown stage of Suricata.

Gathering of capture-bypassed flow statistics was left to the bypass
capture method via BypassUpdate callback. Until now, capture-bypassed
flows that did not timeout had their statistics unchecked in the period
between last check and shutdown. This commit forces gathering of
statistics from these flows.

Ticket: 8440
This change prevents capture-bypassed flows to be removed from the
flow table by a worker thread. If a flow like this is de-initialized
any other way than how FlowManager handles de-initialization
of capture-bypassed flows, the underlying bypass method is not aware
that it should not filter-out the flow anymore (e.g. EBPF map is not
updated). This can lead to a resource leak, such as EBPF map being
fully filled out and bypass being incapable of filtering any new flows.

Until now, this issue happened in a case when capture-bypassed flow has
reached its timeout (as in suricata.yaml flow-timeouts.x.bypassed),
but worker thread was the first who pre-emptively de-initialized
the flow, before FlowManager could perform proper de-initialization.

Ticket: 8442
for SV to run tests based on the presence of this feature
so as to run ebpf live tests
Ticket: 7674

Allows a compile-time option AFPACKET_TEST_REPLAY, that allows
to set a configuration max-packets per afpacket interface,
after which the PktAcqLoop stops.

This allows suricata-verify tests to run with tcpreplay,
and know when to stop
@codecov

codecov Bot commented Jun 25, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.55172% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 82.96%. Comparing base (09f0851) to head (43fdfdf).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #15733      +/-   ##
==========================================
- Coverage   82.96%   82.96%   -0.01%     
==========================================
  Files        1003     1003              
  Lines      275031   275051      +20     
==========================================
- Hits       228192   228190       -2     
- Misses      46839    46861      +22     
Flag Coverage Δ
fuzzcorpus 61.46% <0.00%> (-0.01%) ⬇️
livemode 18.36% <100.00%> (-0.02%) ⬇️
netns 22.75% <96.55%> (-0.01%) ⬇️
pcap 45.33% <93.75%> (-0.06%) ⬇️
suricata-verify 66.92% <100.00%> (-0.03%) ⬇️
unittests 58.44% <10.34%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants