tools: ynl: Handle byte-order in struct members

Add support for byte-order in struct members in the genetlink-legacy
spec.

Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Donald Hunter
2023-05-23 10:37:48 +01:00
committed by David S. Miller
parent 7c2435ef76
commit bddd2e561b
3 changed files with 8 additions and 4 deletions

View File

@@ -124,7 +124,7 @@ class NlAttr:
offset = 0
for m in members:
# TODO: handle non-scalar members
format = self.get_format(m.type)
format = self.get_format(m.type, m.byte_order)
decoded = format.unpack_from(self.raw, offset)
offset += format.size
value[m.name] = decoded[0]
@@ -305,7 +305,7 @@ class GenlMsg:
self.fixed_header_attrs = dict()
for m in fixed_header_members:
format = NlAttr.get_format(m.type)
format = NlAttr.get_format(m.type, m.byte_order)
decoded = format.unpack_from(nl_msg.raw, offset)
offset += format.size
self.fixed_header_attrs[m.name] = decoded[0]
@@ -542,7 +542,7 @@ class YnlFamily(SpecFamily):
fixed_header_members = self.consts[op.fixed_header].members
for m in fixed_header_members:
value = vals.pop(m.name)
format = NlAttr.get_format(m.type)
format = NlAttr.get_format(m.type, m.byte_order)
msg += format.pack(value)
for name, value in vals.items():
msg += self._add_attr(op.attr_set.name, name, value)