[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250515231650.1325372-1-kuba@kernel.org>
Date: Thu, 15 May 2025 16:16:41 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: davem@...emloft.net
Cc: netdev@...r.kernel.org,
edumazet@...gle.com,
pabeni@...hat.com,
andrew+netdev@...n.ch,
horms@...nel.org,
donald.hunter@...il.com,
daniel@...earbox.net,
nicolas.dichtel@...nd.com,
jacob.e.keller@...el.com,
Jakub Kicinski <kuba@...nel.org>
Subject: [PATCH net-next 0/9] tools: ynl-gen: support sub-messages and rt-link
Sub-messages are how we express "polymorphism" in YNL. Donald added
the support to specs and Python a while back, support them in C, too.
Sub-message is a nest, but the interpretation of the attribute types
within that nest depends on a value of another attribute. For example
in rt-link the "kind" attribute contains the link type (veth, bonding,
etc.) and based on that the right enum has to be applied to interpret
link-specific attributes.
The last message is probably the most interesting to look at, as it
adds a fairly advanced sample.
This patch only contains enough support for rtnetlink, we will need
a little more complexity to support TC, where sub-messages may contain
fixed headers, and where the selector may be in a different nest than
the submessage.
Jakub Kicinski (9):
netlink: specs: rt-link: add C naming info for ovpn
tools: ynl-gen: factor out the annotation of pure nested struct
tools: ynl-gen: prepare for submsg structs
tools: ynl-gen: submsg: plumb thru an empty type
tools: ynl-gen: submsg: render the structs
tools: ynl-gen: submsg: support parsing and rendering sub-messages
tools: ynl: submsg: reverse parse / error reporting
tools: ynl: enable codegen for all rt- families
tools: ynl: add a sample for rt-link
Documentation/netlink/specs/rt-link.yaml | 4 +
tools/net/ynl/Makefile.deps | 4 +
tools/net/ynl/generated/Makefile | 7 +-
tools/net/ynl/lib/ynl-priv.h | 8 +-
tools/net/ynl/lib/ynl.h | 1 +
tools/net/ynl/lib/ynl.c | 93 +++++++-
tools/net/ynl/samples/rt-link.c | 184 +++++++++++++++
tools/net/ynl/pyynl/lib/__init__.py | 5 +-
tools/net/ynl/pyynl/ynl_gen_c.py | 272 +++++++++++++++++++----
tools/net/ynl/samples/.gitignore | 1 +
10 files changed, 517 insertions(+), 62 deletions(-)
create mode 100644 tools/net/ynl/samples/rt-link.c
--
2.49.0
Powered by blists - more mailing lists