diff mbox series

[66/69] ynl: fix nested policy attribute type

Message ID 20230605094617.3564079-1-arkadiusz.kubalewski@intel.com (mailing list archive)
State Changes Requested
Headers show
Series None | expand

Commit Message

Arkadiusz Kubalewski June 5, 2023, 9:46 a.m. UTC
When nested attribute is used, generated type in the netlink policy
is NLA_NEST, which is wrong as there is no such type. Fix be adding
`ed` sufix for policy generated for 'nest' type attribute.

Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
---
 tools/net/ynl/ynl-gen-c.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Jakub Kicinski June 5, 2023, 6:06 p.m. UTC | #1
On Mon,  5 Jun 2023 11:46:17 +0200 Arkadiusz Kubalewski wrote:
> When nested attribute is used, generated type in the netlink policy
> is NLA_NEST, which is wrong as there is no such type. Fix be adding
> `ed` sufix for policy generated for 'nest' type attribute.
> 
> Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
> ---
>  tools/net/ynl/ynl-gen-c.py | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py
> index 28afb0846143..89603866d4a0 100755
> --- a/tools/net/ynl/ynl-gen-c.py
> +++ b/tools/net/ynl/ynl-gen-c.py
> @@ -113,7 +113,10 @@ class Type(SpecAttr):
>          return '{ .type = ' + policy + ', }'
>  
>      def attr_policy(self, cw):
> -        policy = c_upper('nla-' + self.attr['type'])
> +        if (self.attr['type'] == 'nest'):
> +            policy = c_upper('nla-' + self.attr['type'] + 'ed')
> +        else:
> +            policy = c_upper('nla-' + self.attr['type'])
>  
>          spec = self._attr_policy(policy)
>          cw.p(f"\t[{self.enum_name}] = {spec},")

For nests the policy should come from

  class TypeNest -> def _attr_policy()

why do we need to tweak the default implementation in the parent class?
diff mbox series

Patch

diff --git a/tools/net/ynl/ynl-gen-c.py b/tools/net/ynl/ynl-gen-c.py
index 28afb0846143..89603866d4a0 100755
--- a/tools/net/ynl/ynl-gen-c.py
+++ b/tools/net/ynl/ynl-gen-c.py
@@ -113,7 +113,10 @@  class Type(SpecAttr):
         return '{ .type = ' + policy + ', }'
 
     def attr_policy(self, cw):
-        policy = c_upper('nla-' + self.attr['type'])
+        if (self.attr['type'] == 'nest'):
+            policy = c_upper('nla-' + self.attr['type'] + 'ed')
+        else:
+            policy = c_upper('nla-' + self.attr['type'])
 
         spec = self._attr_policy(policy)
         cw.p(f"\t[{self.enum_name}] = {spec},")