Message ID | 20241007155311.1193382-1-kuba@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 42b2331081178785d50d116c85ca40d728b48291 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] tools: ynl-gen: refactor check validation for TypeBinary | expand |
Jakub Kicinski <kuba@kernel.org> writes: > We only support a single check at a time for TypeBinary. > Refactor the code to cover 'exact-len' and make adding > new checks easier. > > Link: https://lore.kernel.org/20241004063855.1a693dd1@kernel.org > Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Donald Hunter <donald.hunter@gmail.com>
Hello: This patch was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Mon, 7 Oct 2024 08:53:11 -0700 you wrote: > We only support a single check at a time for TypeBinary. > Refactor the code to cover 'exact-len' and make adding > new checks easier. > > Link: https://lore.kernel.org/20241004063855.1a693dd1@kernel.org > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > > [...] Here is the summary with links: - [net-next] tools: ynl-gen: refactor check validation for TypeBinary https://git.kernel.org/netdev/net-next/c/42b233108117 You are awesome, thank you!
diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py index 717530bc9c52..9e8254aad578 100755 --- a/tools/net/ynl/ynl-gen-c.py +++ b/tools/net/ynl/ynl-gen-c.py @@ -464,17 +464,22 @@ from lib import SpecFamily, SpecAttrSet, SpecAttr, SpecOperation, SpecEnumSet, S return f'.type = YNL_PT_BINARY,' def _attr_policy(self, policy): - if 'exact-len' in self.checks: - mem = 'NLA_POLICY_EXACT_LEN(' + str(self.get_limit('exact-len')) + ')' + if len(self.checks) == 0: + pass + elif len(self.checks) == 1: + check_name = list(self.checks)[0] + if check_name not in {'exact-len', 'min-len'}: + raise Exception('Unsupported check for binary type: ' + check_name) else: - mem = '{ ' - if len(self.checks) == 1 and 'min-len' in self.checks: - mem += '.len = ' + str(self.get_limit('min-len')) - elif len(self.checks) == 0: - mem += '.type = NLA_BINARY' - else: - raise Exception('One or more of binary type checks not implemented, yet') - mem += ', }' + raise Exception('More than one check for binary type not implemented, yet') + + if len(self.checks) == 0: + mem = '{ .type = NLA_BINARY, }' + elif 'exact-len' in self.checks: + mem = 'NLA_POLICY_EXACT_LEN(' + str(self.get_limit('exact-len')) + ')' + elif 'min-len' in self.checks: + mem = '{ .len = ' + str(self.get_limit('min-len')) + ', }' + return mem def attr_put(self, ri, var):
We only support a single check at a time for TypeBinary. Refactor the code to cover 'exact-len' and make adding new checks easier. Link: https://lore.kernel.org/20241004063855.1a693dd1@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- CC: donald.hunter@gmail.com CC: Antonio Quartulli <antonio@openvpn.net> --- tools/net/ynl/ynl-gen-c.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)