Commit 90256f3f authored by Jakub Kicinski's avatar Jakub Kicinski

tools: ynl: support multi-attr

Ethtool uses mutli-attr, add the support to YNL.
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent fd0616d3
......@@ -373,22 +373,29 @@ class YnlFamily(SpecFamily):
attr_spec = attr_space.attrs_by_val[attr.type]
if attr_spec["type"] == 'nest':
subdict = self._decode(NlAttrs(attr.raw), attr_spec['nested-attributes'])
rsp[attr_spec['name']] = subdict
decoded = subdict
elif attr_spec['type'] == 'u8':
rsp[attr_spec['name']] = attr.as_u8()
decoded = attr.as_u8()
elif attr_spec['type'] == 'u32':
rsp[attr_spec['name']] = attr.as_u32()
decoded = attr.as_u32()
elif attr_spec['type'] == 'u64':
rsp[attr_spec['name']] = attr.as_u64()
decoded = attr.as_u64()
elif attr_spec["type"] == 'string':
rsp[attr_spec['name']] = attr.as_strz()
decoded = attr.as_strz()
elif attr_spec["type"] == 'binary':
rsp[attr_spec['name']] = attr.as_bin()
decoded = attr.as_bin()
elif attr_spec["type"] == 'flag':
rsp[attr_spec['name']] = True
decoded = True
else:
raise Exception(f'Unknown {attr.type} {attr_spec["name"]} {attr_spec["type"]}')
if not attr_spec.is_multi:
rsp[attr_spec['name']] = decoded
elif attr_spec.name in rsp:
rsp[attr_spec.name].append(decoded)
else:
rsp[attr_spec.name] = [decoded]
if 'enum' in attr_spec:
self._decode_enum(rsp, attr_spec)
return rsp
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment