This series extracts the testpmd flow CLI parser into a reusable library, enabling external applications to parse rte_flow rules using testpmd syntax.
Motivation ---------- External applications like Suricata IDS [1] need to express hardware filtering rules in a consistent, human-readable format. Rather than inventing custom syntax, reusing testpmd's well-tested flow grammar provides immediate compatibility with existing documentation and user knowledge. Note: This library provides only one way to create rte_flow structures. Applications can also construct rte_flow_attr, rte_flow_item[], and rte_flow_action[] directly in C code. Design ------ The library (librte_flow_parser) exposes: - rte_flow_parser_parse(): Parse command strings into structured output - rte_flow_parser_parse_attr_str(): Parse attributes only - rte_flow_parser_parse_pattern_str(): Parse patterns only - rte_flow_parser_parse_actions_str(): Parse actions only Testpmd is updated to use the shared library, ensuring a single maintained parser implementation. Testing ------- - Unit tests: flow_parser_autotest, flow_parser_helpers_autotest - Example application: examples/flow_parsing - All existing testpmd flow commands work unchanged [1] https://github.com/OISF/suricata/pull/13950 Lukas Sismis (7): flow_parser: add shared parser library app/testpmd: integrate shared flow parser library examples/flow_parsing: add flow parser demo test: add flow parser unit tests doc: add flow parser library maintainers dts: fix invalid f-string syntax in testpmd API cmdline: include stddef.h before defining offsetof .mailmap | 2 +- MAINTAINERS | 3 + app/test-pmd/cmd_flex_item.c | 41 +- app/test-pmd/cmdline.c | 254 +- app/test-pmd/config.c | 112 +- app/test-pmd/flow_parser.c | 406 + app/test-pmd/flow_parser.h | 8 + app/test-pmd/flow_parser_cli.c | 149 + app/test-pmd/meson.build | 5 +- app/test-pmd/testpmd.c | 4 + app/test-pmd/testpmd.h | 126 +- app/test/meson.build | 1 + app/test/test_flow_parser.c | 226 + doc/guides/prog_guide/flow_parser_lib.rst | 140 + doc/guides/prog_guide/index.rst | 1 + doc/guides/rel_notes/release_26_03.rst | 9 + dts/api/testpmd/__init__.py | 8 +- examples/flow_parsing/main.c | 345 + examples/flow_parsing/meson.build | 11 + examples/meson.build | 1 + lib/cmdline/cmdline_parse.h | 2 + lib/ethdev/rte_ethdev.c | 107 + lib/ethdev/rte_ethdev.h | 60 + lib/flow_parser/meson.build | 6 + .../flow_parser/rte_flow_parser.c | 10774 ++++++++-------- lib/flow_parser/rte_flow_parser.h | 1304 ++ lib/meson.build | 2 + 27 files changed, 8600 insertions(+), 5507 deletions(-) create mode 100644 app/test-pmd/flow_parser.c create mode 100644 app/test-pmd/flow_parser.h create mode 100644 app/test-pmd/flow_parser_cli.c create mode 100644 app/test/test_flow_parser.c create mode 100644 doc/guides/prog_guide/flow_parser_lib.rst create mode 100644 examples/flow_parsing/main.c create mode 100644 examples/flow_parsing/meson.build create mode 100644 lib/flow_parser/meson.build rename app/test-pmd/cmdline_flow.c => lib/flow_parser/rte_flow_parser.c (57%) create mode 100644 lib/flow_parser/rte_flow_parser.h -- 2.43.7

