All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/7] flow_parser: add shared parser library
@ 2026-01-15 23:01 Lukas Sismis
  2026-01-15 23:01 ` [PATCH v3 1/7] cmdline: include stddef.h for offsetof Lukas Sismis
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Lukas Sismis @ 2026-01-15 23:01 UTC (permalink / raw)
  To: dev; +Cc: Lukas Sismis

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, among others, the following APIs:
- 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 and Demo
-------
- Functional tests in dpdk-test
- Example application: examples/flow_parsing

Changes
-------

v3:
- Add more functional tests
- More concise MAINTAINERS updates
- Updated license headers
- A thing to note: When playing with flow commands, I figured, some may use
  non-flow commands, such as raw decap/encap, policy meter and others.
  Flow parser library itself now supports `set` command to set e.g. the decap/
  encap parameters, as the flow syntax only supports defining the index of the
  encap/decap configs. The library, however, does not support e.g. `create`
  command to create policy meters, as that is just an ID and it can be created
  separately using rte_meter APIs.

[1] https://github.com/OISF/suricata/pull/13950

Lukas Sismis (7):
  cmdline: include stddef.h for offsetof
  flow_parser: add shared parser library
  app/testpmd: use shared flow parser library
  examples/flow_parsing: add flow parser demo
  dpdk-test: add flow parser library functional tests
  mailmap: update a new contributor email
  dts: fix invalid f-string syntax in testpmd API

 .mailmap                                      |     2 +-
 MAINTAINERS                                   |     6 +-
 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                   |   698 +
 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                  |   288 +
 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             | 11320 ++++++++--------
 lib/flow_parser/rte_flow_parser.h             |  1306 ++
 lib/meson.build                               |     2 +
 27 files changed, 9300 insertions(+), 5773 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 (55%)
 create mode 100644 lib/flow_parser/rte_flow_parser.h

-- 
2.43.7


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2026-01-20 17:29 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-15 23:01 [PATCH v3 0/7] flow_parser: add shared parser library Lukas Sismis
2026-01-15 23:01 ` [PATCH v3 1/7] cmdline: include stddef.h for offsetof Lukas Sismis
2026-01-15 23:01 ` [PATCH v3 3/7] app/testpmd: use shared flow parser library Lukas Sismis
2026-01-16 17:21   ` Stephen Hemminger
2026-01-15 23:01 ` [PATCH v3 4/7] examples/flow_parsing: add flow parser demo Lukas Sismis
2026-01-16 17:22   ` Stephen Hemminger
2026-01-15 23:01 ` [PATCH v3 5/7] dpdk-test: add flow parser library functional tests Lukas Sismis
2026-01-15 23:01 ` [PATCH v3 6/7] mailmap: update a new contributor email Lukas Sismis
2026-01-15 23:01 ` [PATCH v3 7/7] dts: fix invalid f-string syntax in testpmd API Lukas Sismis
2026-01-20 16:44   ` Dean Marx
2026-01-20 16:53   ` Patrick Robb
2026-01-20 17:29     ` Dean Marx
2026-01-16  6:01 ` [PATCH v3 0/7] flow_parser: add shared parser library Stephen Hemminger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.