summaryrefslogtreecommitdiff
path: root/tools/net
diff options
context:
space:
mode:
authorAlessandro Marcolini <alessandromarcolini99@gmail.com>2024-02-03 14:16:53 +0100
committerJakub Kicinski <kuba@kernel.org>2024-02-06 18:56:19 -0800
commitb9bcfc3bc978f7b81104d2c01d4fe29a6f45e17a (patch)
treecbc6dde5f20924e089635b08538b0752b2c57432 /tools/net
parent70ff9a91e86850103f71d5920eff6bee81bd2a0d (diff)
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')
-rw-r--r--tools/net/ynl/lib/ynl.py7
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''