Re: [PATCH net-next 02/11] tools: ynl-gen: generate nested array policies
From: Asbjørn Sloth Tønnesen <hidden>
Date: 2025-09-06 14:13:16
Also in:
lkml
CC: Johannes On 9/6/25 12:19 AM, Jacob Keller wrote:
On 9/4/2025 3:01 PM, Asbjørn Sloth Tønnesen wrote:quoted
This patch adds support for NLA_POLICY_NESTED_ARRAY() policies. Example spec (from future wireguard.yaml): - name: wgpeer attributes: - name: allowedips type: indexed-array sub-type: nest nested-attributes: wgallowedip yields NLA_POLICY_NESTED_ARRAY(wireguard_wgallowedip_nl_policy). This doesn't change any currently generated code, as it isn't used in any specs currently used for generating code. Signed-off-by: Asbjørn Sloth Tønnesen <redacted> ---Is this keyed of off the sub-type? Does you mean that all the existing uses of 'sub-type: nest' don't generate code today? Or that this _attr_policy implementation is not called yet?
Thanks for the reviews. Yeah, it is a careful wording, because we have
specs matching it, but there aren't any source files that triggers
ynl-gen to generate code based on those specs.
Therefore this patch, doesn't result in any code changes when running:
$ ./tools/net/ynl/ynl-regen.sh -f
Actually ynl-gen generates a fictive "{ .type = NLA_INDEXED_ARRAY, }"
policy, without this patch, leading to a build failure.
I checked and we have quite a number of uses:quoted
$ rg 'sub-type: nest' Documentation/netlink/specs/nlctrl.yaml
>> [..]
quoted
Documentation/netlink/specs/tc.yaml [..] Documentation/netlink/specs/rt-link.yaml [..] Documentation/netlink/specs/nl80211.yaml [..]
None of those currently have a generated netlink policy. These are the netlink policies currently generated by ynl-gen: $ git grep -h -B1 'YNL-GEN kernel source' | grep '^/\*[^ ]' /* Documentation/netlink/specs/dpll.yaml */ /* Documentation/netlink/specs/ovpn.yaml */ /* Documentation/netlink/specs/team.yaml */ /* Documentation/netlink/specs/lockd.yaml */ /* Documentation/netlink/specs/nfsd.yaml */ /* Documentation/netlink/specs/netdev.yaml */ /* Documentation/netlink/specs/devlink.yaml */ /* Documentation/netlink/specs/handshake.yaml */ /* Documentation/netlink/specs/fou.yaml */ /* Documentation/netlink/specs/mptcp_pm.yaml */ /* Documentation/netlink/specs/net_shaper.yaml */ Johannes introduced NLA_NESTED_ARRAY and the NLA_POLICY_NESTED_ARRAY() macro in commit 1501d13596b9 for use in nl80211, and it's therefore used in net/wireless/nl80211.c, but outside of that the macro is only sparsely adopted (only by mac80211_hwsim.c and nf_tables_api.c). Wireguard adopts the macro in this RFC patch: https://lore.kernel.org/netdev/20250904220255.1006675-2-ast@fiberby.net/ (local)