diff options
author | Alessandro Marcolini <alessandromarcolini99@gmail.com> | 2024-02-03 16:16:53 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-02-07 05:56:19 +0300 |
commit | b9bcfc3bc978f7b81104d2c01d4fe29a6f45e17a (patch) | |
tree | cbc6dde5f20924e089635b08538b0752b2c57432 /tools/net/ynl | |
parent | 70ff9a91e86850103f71d5920eff6bee81bd2a0d (diff) | |
download | linux-b9bcfc3bc978f7b81104d2c01d4fe29a6f45e17a.tar.xz |
tools: ynl: add support for encoding multi-attr
Multi-attr elements could not be encoded because of missing logic in the
ynl code. Enable encoding of these attributes by checking if the
attribute is a multi-attr and if the value to be processed is a list.
This has been tested both with the taprio and ets qdisc which contain
this kind of attributes.
Signed-off-by: Alessandro Marcolini <alessandromarcolini99@gmail.com>
Reviewed-by: Donald Hunter <donald.hunter@gmail.com>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/c5bc9f5797168dbf7a4379c42f38d5de8ac7f38a.1706962013.git.alessandromarcolini99@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/net/ynl')
-rw-r--r-- | tools/net/ynl/lib/ynl.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py index 0f4193cc2e3b..03c7ca6aaae9 100644 --- a/tools/net/ynl/lib/ynl.py +++ b/tools/net/ynl/lib/ynl.py @@ -444,6 +444,13 @@ class YnlFamily(SpecFamily): except KeyError: raise Exception(f"Space '{space}' has no attribute '{name}'") nl_type = attr.value + + if attr.is_multi and isinstance(value, list): + attr_payload = b'' + for subvalue in value: + attr_payload += self._add_attr(space, name, subvalue, search_attrs) + return attr_payload + if attr["type"] == 'nest': nl_type |= Netlink.NLA_F_NESTED attr_payload = b'' |