diff options
author | Jakub Kicinski <kuba@kernel.org> | 2023-06-01 19:35:40 -0700 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-06-02 22:10:46 -0700 |
commit | 6ad49839ba9b44cf957555f2b0b4f8bc076db48f (patch) | |
tree | 7e2d6ca4986c65ff2d32b95023b9869a120335c4 /tools/net | |
parent | 91dfaef243cdabbda8af95643bba82b778a4d0dc (diff) | |
download | linux-stable-6ad49839ba9b44cf957555f2b0b4f8bc076db48f.tar.gz linux-stable-6ad49839ba9b44cf957555f2b0b4f8bc076db48f.tar.bz2 linux-stable-6ad49839ba9b44cf957555f2b0b4f8bc076db48f.zip |
tools: ynl-gen: fix unused / pad attribute handling
Unused and Pad attributes don't carry information.
Unused should never exist, and be rejected.
Pad should be silently skipped.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/net')
-rwxr-xr-x | tools/net/ynl/ynl-gen-c.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py index 5823ddf912f6..11dcbfc21ecc 100755 --- a/tools/net/ynl/ynl-gen-c.py +++ b/tools/net/ynl/ynl-gen-c.py @@ -170,6 +170,7 @@ class Type(SpecAttr): for line in lines: ri.cw.p(line) ri.cw.block_end() + return True def _setter_lines(self, ri, member, presence): raise Exception(f"Setter not implemented for class type {self.type}") @@ -197,6 +198,12 @@ class TypeUnused(Type): def presence_type(self): return '' + def arg_member(self, ri): + return [] + + def _attr_get(self, ri, var): + return ['return MNL_CB_ERROR;'], None, None + def _attr_typol(self): return '.type = YNL_PT_REJECT, ' @@ -208,8 +215,14 @@ class TypePad(Type): def presence_type(self): return '' + def arg_member(self, ri): + return [] + def _attr_typol(self): - return '.type = YNL_PT_REJECT, ' + return '.type = YNL_PT_IGNORE, ' + + def attr_get(self, ri, var, first): + pass def attr_policy(self, cw): pass @@ -1211,8 +1224,9 @@ def _multi_parse(ri, struct, init_lines, local_vars): first = True for _, arg in struct.member_list(): - arg.attr_get(ri, 'dst', first=first) - first = False + good = arg.attr_get(ri, 'dst', first=first) + # First may be 'unused' or 'pad', ignore those + first &= not good ri.cw.block_end() ri.cw.nl() |