summaryrefslogtreecommitdiffstats
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-07 03:56:19 +0100
commitb9bcfc3bc978f7b81104d2c01d4fe29a6f45e17a (patch)
treecbc6dde5f20924e089635b08538b0752b2c57432 /tools/net
parentdoc: netlink: specs: tc: add multi-attr to tc-taprio-sched-entry (diff)
downloadlinux-b9bcfc3bc978f7b81104d2c01d4fe29a6f45e17a.tar.xz
linux-b9bcfc3bc978f7b81104d2c01d4fe29a6f45e17a.zip
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''