Message ID | 20250108200758.2693155-1-kuba@kernel.org (mailing list archive) |
---|---|
State | New |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] tools: ynl-gen-c: improve support for empty nests | expand |
On 01/08, Jakub Kicinski wrote: > Empty nests are the same size as a flag at the netlink level > (just a 4 byte nlattr without a payload). They are sometimes > useful in case we want to only communicate a presence of > something but may want to add more details later. > This may be the case in the upcoming io_uring ZC patches, > for example. > > Improve handling of nested empty structs. We already support > empty structs since a lot of netlink replies are empty, but > for nested ones we need minor tweaks to avoid pointless empty > lines and unused variables. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> Acked-by: Stanislav Fomichev <sdf@fomichev.me> Looks sensible. Assuming the context is: https://lore.kernel.org/netdev/20250108220644.3528845-1-dw@davidwei.uk/T/#Z2e.:..:20250108220644.3528845-8-dw::40davidwei.uk:1Documentation:netlink:specs:netdev.yaml
diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py index ec2288948795..9722a8f72a46 100755 --- a/tools/net/ynl/ynl-gen-c.py +++ b/tools/net/ynl/ynl-gen-c.py @@ -1765,7 +1765,14 @@ _C_KW = { f'{struct.ptr_name}dst = yarg->data;'] init_lines = [] - _multi_parse(ri, struct, init_lines, local_vars) + if struct.member_list(): + _multi_parse(ri, struct, init_lines, local_vars) + else: + # Empty nest + ri.cw.block_start() + ri.cw.p('return 0;') + ri.cw.block_end() + ri.cw.nl() def parse_rsp_msg(ri, deref=False): @@ -2592,7 +2599,8 @@ _C_KW = { val = attr.value val += 1 cw.p(attr.enum_name + suffix) - cw.nl() + if attr_set.items(): + cw.nl() cw.p(attr_set.cnt_name + ('' if max_by_define else ',')) if not max_by_define: cw.p(f"{attr_set.max_name} = {max_value}")
Empty nests are the same size as a flag at the netlink level (just a 4 byte nlattr without a payload). They are sometimes useful in case we want to only communicate a presence of something but may want to add more details later. This may be the case in the upcoming io_uring ZC patches, for example. Improve handling of nested empty structs. We already support empty structs since a lot of netlink replies are empty, but for nested ones we need minor tweaks to avoid pointless empty lines and unused variables. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- CC: dw@davidwei.uk CC: donald.hunter@gmail.com CC: nicolas.dichtel@6wind.com CC: sdf@fomichev.me --- tools/net/ynl/ynl-gen-c.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)