From: Jakub Kicinski Date: Fri, 2 Jun 2023 02:35:40 +0000 (-0700) Subject: tools: ynl-gen: fix unused / pad attribute handling X-Git-Tag: microblaze-v6.6~166^2~178^2~8 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=6ad49839ba9b44cf957555f2b0b4f8bc076db48f;p=linux-2.6-microblaze.git 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 --- 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()