Re: [PATCH net-next 05/11] tools: ynl-gen: define nlattr *array in a block scope
From: Jakub Kicinski <kuba@kernel.org>
Date: 2025-09-06 00:18:11
Also in:
lkml
From: Jakub Kicinski <kuba@kernel.org>
Date: 2025-09-06 00:18:11
Also in:
lkml
On Thu, 4 Sep 2025 22:01:28 +0000 Asbjørn Sloth Tønnesen wrote:
Instead of trying to define "struct nlattr *array;" in the all
the right places, then simply define it in a block scope,
as it's only used here.
Before this patch it was generated for attribute set _put()
functions, like wireguard_wgpeer_put(), but missing and caused a
compile error for the command function wireguard_set_device().
$ make -C tools/net/ynl/generated wireguard-user.o
-e CC wireguard-user.o
wireguard-user.c: In function ‘wireguard_set_device’:
wireguard-user.c:548:9: error: ‘array’ undeclared (first use in ..)
548 | array = ynl_attr_nest_start(nlh, WGDEVICE_A_PEERS);
| ^~~~~Dunno about this one. In patch 4 you basically add another instance of the "let's declare local vars at function level" approach. And here you're going the other way. This patch will certainly work, but I felt like I wouldn't have written it this way if I was typing in the parsers by hand.