flowprobe: fix corrupted packets sent after feature disabling 06/39606/3
authorAlexander Chernavin <achernavin@netgate.com>
Tue, 3 Oct 2023 12:45:51 +0000 (12:45 +0000)
committerOle Tr�an <otroan@employees.org>
Mon, 16 Oct 2023 13:13:55 +0000 (13:13 +0000)
commitf68afe85a6e4d5e00fdad1af19a76eb40fdfa388
treefe1f869f8429d09e7e352eeed3c900141baa7331
parentda34f4add5f141d58670d81d53553986e9a472b4
flowprobe: fix corrupted packets sent after feature disabling

When IPFIX flow record generation is enabled on an interface and the
active timer is set, flows will be saved and then exported according to
the active and passive timers. If then disable the feature on the
interface, the flow entries currently saved will remain in the state
tables. They will gradually expire and be exported. The problem is that
the template for them has already been removed. And they will be sent
with zero template ID which will make them unreadable.

A similar problem will occur if feature settings are "changed" on the
interface - i.e. disable the feature and re-enable it with different
settings (e.g. set a different datapath). The remaining flows that
correspond to the previous feature settings will be eventually sent
either with zero template ID or with template ID that corresponds to the
current feature settings on the interface (and look like garbage data).

With this fix, flush the current buffers before template removal and
clear the remaining flows of the interface during feature disabling.

Type: fix
Change-Id: I1e57db06adfdd3a02fed1a6a89b5418f85a35e16
Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
src/plugins/flowprobe/flowprobe.c
src/plugins/flowprobe/flowprobe.h
src/plugins/flowprobe/node.c
test/test_flowprobe.py