* [PATCH net-next 0/3] tools: ynl: decode link types present in tests
@ 2025-01-05 1:25 Jakub Kicinski
2025-01-05 1:25 ` [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset Jakub Kicinski
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: Jakub Kicinski @ 2025-01-05 1:25 UTC (permalink / raw)
To: davem; +Cc: donald.hunter, netdev, edumazet, pabeni, Jakub Kicinski
Using a kernel built for the net selftest target to run drivers/net
tests currently fails, because the net kernel automatically spawns
a handful of tunnel devices which YNL can't decode.
Fill in those missing link types in rt_link. We need to extend subset
support a bit for it to work.
Jakub Kicinski (3):
tools: ynl: correctly handle overrides of fields in subset
tools: ynl: print some information about attribute we can't parse
netlink: specs: rt_link: decode ip6tnl, vti and vti6 link attrs
Documentation/netlink/specs/rt_link.yaml | 87 ++++++++++++++++++++++++
tools/net/ynl/lib/nlspec.py | 5 +-
tools/net/ynl/lib/ynl.py | 72 +++++++++++---------
3 files changed, 129 insertions(+), 35 deletions(-)
--
2.47.1
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset 2025-01-05 1:25 [PATCH net-next 0/3] tools: ynl: decode link types present in tests Jakub Kicinski @ 2025-01-05 1:25 ` Jakub Kicinski 2025-01-06 13:27 ` Donald Hunter 2025-01-05 1:25 ` [PATCH net-next 2/3] tools: ynl: print some information about attribute we can't parse Jakub Kicinski ` (2 subsequent siblings) 3 siblings, 1 reply; 10+ messages in thread From: Jakub Kicinski @ 2025-01-05 1:25 UTC (permalink / raw) To: davem; +Cc: donald.hunter, netdev, edumazet, pabeni, Jakub Kicinski We stated in documentation [1] and previous discussions [2] that the need for overriding fields in members of subsets is anticipated. Implement it. [1] https://docs.kernel.org/next/userspace-api/netlink/specs.html#subset-of [2] https://lore.kernel.org/netdev/20231004171350.1f59cd1d@kernel.org/ Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- tools/net/ynl/lib/nlspec.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/net/ynl/lib/nlspec.py b/tools/net/ynl/lib/nlspec.py index a745739655ad..314ec8007496 100644 --- a/tools/net/ynl/lib/nlspec.py +++ b/tools/net/ynl/lib/nlspec.py @@ -219,7 +219,10 @@ jsonschema = None else: real_set = family.attr_sets[self.subset_of] for elem in self.yaml['attributes']: - attr = real_set[elem['name']] + real_attr = real_set[elem['name']] + combined_elem = real_attr.yaml | elem + attr = self.new_attr(combined_elem, real_attr.value) + self.attrs[attr.name] = attr self.attrs_by_val[attr.value] = attr -- 2.47.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset 2025-01-05 1:25 ` [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset Jakub Kicinski @ 2025-01-06 13:27 ` Donald Hunter 2025-01-06 15:36 ` Jakub Kicinski 0 siblings, 1 reply; 10+ messages in thread From: Donald Hunter @ 2025-01-06 13:27 UTC (permalink / raw) To: Jakub Kicinski; +Cc: davem, netdev, edumazet, pabeni Jakub Kicinski <kuba@kernel.org> writes: > We stated in documentation [1] and previous discussions [2] > that the need for overriding fields in members of subsets > is anticipated. Implement it. > > [1] https://docs.kernel.org/next/userspace-api/netlink/specs.html#subset-of > [2] https://lore.kernel.org/netdev/20231004171350.1f59cd1d@kernel.org/ > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> I guess we're okay with requiring Python >= 3.9 for combining dicts with | Reviewed-by: Donald Hunter <donald.hunter@gmail.com> > --- > tools/net/ynl/lib/nlspec.py | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/tools/net/ynl/lib/nlspec.py b/tools/net/ynl/lib/nlspec.py > index a745739655ad..314ec8007496 100644 > --- a/tools/net/ynl/lib/nlspec.py > +++ b/tools/net/ynl/lib/nlspec.py > @@ -219,7 +219,10 @@ jsonschema = None > else: > real_set = family.attr_sets[self.subset_of] > for elem in self.yaml['attributes']: > - attr = real_set[elem['name']] > + real_attr = real_set[elem['name']] > + combined_elem = real_attr.yaml | elem > + attr = self.new_attr(combined_elem, real_attr.value) > + > self.attrs[attr.name] = attr > self.attrs_by_val[attr.value] = attr ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset 2025-01-06 13:27 ` Donald Hunter @ 2025-01-06 15:36 ` Jakub Kicinski 2025-01-06 17:33 ` Donald Hunter 0 siblings, 1 reply; 10+ messages in thread From: Jakub Kicinski @ 2025-01-06 15:36 UTC (permalink / raw) To: Donald Hunter; +Cc: davem, netdev, edumazet, pabeni On Mon, 06 Jan 2025 13:27:49 +0000 Donald Hunter wrote: > > We stated in documentation [1] and previous discussions [2] > > that the need for overriding fields in members of subsets > > is anticipated. Implement it. > > > > [1] https://docs.kernel.org/next/userspace-api/netlink/specs.html#subset-of > > [2] https://lore.kernel.org/netdev/20231004171350.1f59cd1d@kernel.org/ > > > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > > I guess we're okay with requiring Python >= 3.9 for combining > dicts with | Ah, I didn't realize. Does YNL work on older versions today? I thought we already narrowed down to 3.9+. That may have been tests not YNL itself. The "oldest" OS I have is CentOS 9(-derived) and has 3.9, so from my selfish perspective 3.9+ is perfectly fine :) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset 2025-01-06 15:36 ` Jakub Kicinski @ 2025-01-06 17:33 ` Donald Hunter 0 siblings, 0 replies; 10+ messages in thread From: Donald Hunter @ 2025-01-06 17:33 UTC (permalink / raw) To: Jakub Kicinski; +Cc: davem, netdev, edumazet, pabeni On Mon, 6 Jan 2025 at 15:36, Jakub Kicinski <kuba@kernel.org> wrote: > > On Mon, 06 Jan 2025 13:27:49 +0000 Donald Hunter wrote: > > > We stated in documentation [1] and previous discussions [2] > > > that the need for overriding fields in members of subsets > > > is anticipated. Implement it. > > > > > > [1] https://docs.kernel.org/next/userspace-api/netlink/specs.html#subset-of > > > [2] https://lore.kernel.org/netdev/20231004171350.1f59cd1d@kernel.org/ > > > > > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > > > > I guess we're okay with requiring Python >= 3.9 for combining > > dicts with | > > Ah, I didn't realize. Does YNL work on older versions today? > I thought we already narrowed down to 3.9+. That may have > been tests not YNL itself. You're right, we may already be committed to 3.9+ > The "oldest" OS I have is CentOS 9(-derived) and has 3.9, > so from my selfish perspective 3.9+ is perfectly fine :) To be fair, on a previous commit you mentioned that it affected CentOS 8 which EOLed back in May 2024 so we shouldn't feel compelled to support it any more. https://lore.kernel.org/all/20230524170712.2036128-1-kuba@kernel.org/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH net-next 2/3] tools: ynl: print some information about attribute we can't parse 2025-01-05 1:25 [PATCH net-next 0/3] tools: ynl: decode link types present in tests Jakub Kicinski 2025-01-05 1:25 ` [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset Jakub Kicinski @ 2025-01-05 1:25 ` Jakub Kicinski 2025-01-06 13:30 ` Donald Hunter 2025-01-05 1:25 ` [PATCH net-next 3/3] netlink: specs: rt_link: decode ip6tnl, vti and vti6 link attrs Jakub Kicinski 2025-01-06 15:53 ` [PATCH net-next 0/3] tools: ynl: decode link types present in tests Stanislav Fomichev 3 siblings, 1 reply; 10+ messages in thread From: Jakub Kicinski @ 2025-01-05 1:25 UTC (permalink / raw) To: davem; +Cc: donald.hunter, netdev, edumazet, pabeni, Jakub Kicinski When parsing throws an exception one often has to figure out which attribute couldn't be parsed from first principles. For families with large message parsing trees like rtnetlink guessing the attribute can be hard. Print a bit of information as the exception travels out, e.g.: # when dumping rt links Error decoding 'flags' from 'linkinfo-ip6tnl-attrs' Error decoding 'data' from 'linkinfo-attrs' Error decoding 'linkinfo' from 'link-attrs' Traceback (most recent call last): File "/home/kicinski/linux/./tools/net/ynl/cli.py", line 119, in <module> main() File "/home/kicinski/linux/./tools/net/ynl/cli.py", line 100, in main reply = ynl.dump(args.dump, attrs) File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 1064, in dump return self._op(method, vals, dump=True) File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 1058, in _op return self._ops(ops)[0] File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 1045, in _ops rsp_msg = self._decode(decoded.raw_attrs, op.attr_set.name) File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 738, in _decode subdict = self._decode(NlAttrs(attr.raw), attr_spec['nested-attributes'], search_attrs) File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 763, in _decode decoded = self._decode_sub_msg(attr, attr_spec, search_attrs) File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 714, in _decode_sub_msg subdict = self._decode(NlAttrs(attr.raw, offset), msg_format.attr_set) File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 749, in _decode decoded = attr.as_scalar(attr_spec['type'], attr_spec.byte_order) File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 147, in as_scalar return format.unpack(self.raw)[0] struct.error: unpack requires a buffer of 2 bytes The Traceback is what we would previously see, the "Error..." messages are new. We print a message per level (in the stack order). Printing single combined message gets tricky quickly given sub-messages etc. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- tools/net/ynl/lib/ynl.py | 72 +++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/tools/net/ynl/lib/ynl.py b/tools/net/ynl/lib/ynl.py index eea29359a899..08f8bf89cfc2 100644 --- a/tools/net/ynl/lib/ynl.py +++ b/tools/net/ynl/lib/ynl.py @@ -733,41 +733,45 @@ genl_family_name_to_id = None self._rsp_add(rsp, attr_name, None, self._decode_unknown(attr)) continue - if attr_spec["type"] == 'nest': - subdict = self._decode(NlAttrs(attr.raw), attr_spec['nested-attributes'], search_attrs) - decoded = subdict - elif attr_spec["type"] == 'string': - decoded = attr.as_strz() - elif attr_spec["type"] == 'binary': - decoded = self._decode_binary(attr, attr_spec) - elif attr_spec["type"] == 'flag': - decoded = True - elif attr_spec.is_auto_scalar: - decoded = attr.as_auto_scalar(attr_spec['type'], attr_spec.byte_order) - elif attr_spec["type"] in NlAttr.type_formats: - decoded = attr.as_scalar(attr_spec['type'], attr_spec.byte_order) - if 'enum' in attr_spec: - decoded = self._decode_enum(decoded, attr_spec) - elif attr_spec.display_hint: - decoded = self._formatted_string(decoded, attr_spec.display_hint) - elif attr_spec["type"] == 'indexed-array': - decoded = self._decode_array_attr(attr, attr_spec) - elif attr_spec["type"] == 'bitfield32': - value, selector = struct.unpack("II", attr.raw) - if 'enum' in attr_spec: - value = self._decode_enum(value, attr_spec) - selector = self._decode_enum(selector, attr_spec) - decoded = {"value": value, "selector": selector} - elif attr_spec["type"] == 'sub-message': - decoded = self._decode_sub_msg(attr, attr_spec, search_attrs) - elif attr_spec["type"] == 'nest-type-value': - decoded = self._decode_nest_type_value(attr, attr_spec) - else: - if not self.process_unknown: - raise Exception(f'Unknown {attr_spec["type"]} with name {attr_spec["name"]}') - decoded = self._decode_unknown(attr) + try: + if attr_spec["type"] == 'nest': + subdict = self._decode(NlAttrs(attr.raw), attr_spec['nested-attributes'], search_attrs) + decoded = subdict + elif attr_spec["type"] == 'string': + decoded = attr.as_strz() + elif attr_spec["type"] == 'binary': + decoded = self._decode_binary(attr, attr_spec) + elif attr_spec["type"] == 'flag': + decoded = True + elif attr_spec.is_auto_scalar: + decoded = attr.as_auto_scalar(attr_spec['type'], attr_spec.byte_order) + elif attr_spec["type"] in NlAttr.type_formats: + decoded = attr.as_scalar(attr_spec['type'], attr_spec.byte_order) + if 'enum' in attr_spec: + decoded = self._decode_enum(decoded, attr_spec) + elif attr_spec.display_hint: + decoded = self._formatted_string(decoded, attr_spec.display_hint) + elif attr_spec["type"] == 'indexed-array': + decoded = self._decode_array_attr(attr, attr_spec) + elif attr_spec["type"] == 'bitfield32': + value, selector = struct.unpack("II", attr.raw) + if 'enum' in attr_spec: + value = self._decode_enum(value, attr_spec) + selector = self._decode_enum(selector, attr_spec) + decoded = {"value": value, "selector": selector} + elif attr_spec["type"] == 'sub-message': + decoded = self._decode_sub_msg(attr, attr_spec, search_attrs) + elif attr_spec["type"] == 'nest-type-value': + decoded = self._decode_nest_type_value(attr, attr_spec) + else: + if not self.process_unknown: + raise Exception(f'Unknown {attr_spec["type"]} with name {attr_spec["name"]}') + decoded = self._decode_unknown(attr) - self._rsp_add(rsp, attr_spec["name"], attr_spec.is_multi, decoded) + self._rsp_add(rsp, attr_spec["name"], attr_spec.is_multi, decoded) + except: + print(f"Error decoding '{attr_spec.name}' from '{space}'") + raise return rsp -- 2.47.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 2/3] tools: ynl: print some information about attribute we can't parse 2025-01-05 1:25 ` [PATCH net-next 2/3] tools: ynl: print some information about attribute we can't parse Jakub Kicinski @ 2025-01-06 13:30 ` Donald Hunter 0 siblings, 0 replies; 10+ messages in thread From: Donald Hunter @ 2025-01-06 13:30 UTC (permalink / raw) To: Jakub Kicinski; +Cc: davem, netdev, edumazet, pabeni Jakub Kicinski <kuba@kernel.org> writes: > When parsing throws an exception one often has to figure out which > attribute couldn't be parsed from first principles. For families > with large message parsing trees like rtnetlink guessing the > attribute can be hard. > > Print a bit of information as the exception travels out, e.g.: > > # when dumping rt links > Error decoding 'flags' from 'linkinfo-ip6tnl-attrs' > Error decoding 'data' from 'linkinfo-attrs' > Error decoding 'linkinfo' from 'link-attrs' > Traceback (most recent call last): > File "/home/kicinski/linux/./tools/net/ynl/cli.py", line 119, in <module> > main() > File "/home/kicinski/linux/./tools/net/ynl/cli.py", line 100, in main > reply = ynl.dump(args.dump, attrs) > File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 1064, in dump > return self._op(method, vals, dump=True) > File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 1058, in _op > return self._ops(ops)[0] > File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 1045, in _ops > rsp_msg = self._decode(decoded.raw_attrs, op.attr_set.name) > File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 738, in _decode > subdict = self._decode(NlAttrs(attr.raw), attr_spec['nested-attributes'], search_attrs) > File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 763, in _decode > decoded = self._decode_sub_msg(attr, attr_spec, search_attrs) > File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 714, in _decode_sub_msg > subdict = self._decode(NlAttrs(attr.raw, offset), msg_format.attr_set) > File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 749, in _decode > decoded = attr.as_scalar(attr_spec['type'], attr_spec.byte_order) > File "/home/kicinski/linux/tools/net/ynl/lib/ynl.py", line 147, in as_scalar > return format.unpack(self.raw)[0] > struct.error: unpack requires a buffer of 2 bytes > > The Traceback is what we would previously see, the "Error..." > messages are new. We print a message per level (in the stack > order). Printing single combined message gets tricky quickly > given sub-messages etc. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Donald Hunter <donald.hunter@gmail.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH net-next 3/3] netlink: specs: rt_link: decode ip6tnl, vti and vti6 link attrs 2025-01-05 1:25 [PATCH net-next 0/3] tools: ynl: decode link types present in tests Jakub Kicinski 2025-01-05 1:25 ` [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset Jakub Kicinski 2025-01-05 1:25 ` [PATCH net-next 2/3] tools: ynl: print some information about attribute we can't parse Jakub Kicinski @ 2025-01-05 1:25 ` Jakub Kicinski 2025-01-06 13:38 ` Donald Hunter 2025-01-06 15:53 ` [PATCH net-next 0/3] tools: ynl: decode link types present in tests Stanislav Fomichev 3 siblings, 1 reply; 10+ messages in thread From: Jakub Kicinski @ 2025-01-05 1:25 UTC (permalink / raw) To: davem; +Cc: donald.hunter, netdev, edumazet, pabeni, Jakub Kicinski Some of our tests load vti and ip6tnl so not being able to decode the link attrs gets in the way of using Python YNL for testing. Decode link attributes for ip6tnl, vti and vti6. ip6tnl uses IFLA_IPTUN_FLAGS as u32, while ipv4 and sit expect a u16 attribute, so we have a (first?) subset type override... Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- Documentation/netlink/specs/rt_link.yaml | 87 ++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/Documentation/netlink/specs/rt_link.yaml b/Documentation/netlink/specs/rt_link.yaml index 96465376d6fe..363c4d4f0779 100644 --- a/Documentation/netlink/specs/rt_link.yaml +++ b/Documentation/netlink/specs/rt_link.yaml @@ -1825,6 +1825,48 @@ protonum: 0 - name: erspan-hwid type: u16 + - + name: linkinfo-vti-attrs + name-prefix: ifla-vti- + attributes: + - + name: link + type: u32 + - + name: ikey + type: u32 + - + name: okey + type: u32 + - + name: local + type: binary + display-hint: ipv4 + - + name: remote + type: binary + display-hint: ipv4 + - + name: fwmark + type: u32 + - + name: linkinfo-vti6-attrs + subset-of: linkinfo-vti-attrs + attributes: + - + name: link + - + name: ikey + - + name: okey + - + name: local + display-hint: ipv6 + - + name: remote + display-hint: ipv6 + - + name: fwmark - name: linkinfo-geneve-attrs name-prefix: ifla-geneve- @@ -1941,6 +1983,42 @@ protonum: 0 - name: fwmark type: u32 + - + name: linkinfo-ip6tnl-attrs + subset-of: linkinfo-iptun-attrs + attributes: + - + name: link + - + name: local + display-hint: ipv6 + - + name: remote + display-hint: ipv6 + - + name: ttl + - + name: encap-limit + - + name: flowinfo + - + name: flags + # ip6tnl unlike ipip and sit has 32b flags + type: u32 + - + name: proto + - + name: encap-type + - + name: encap-flags + - + name: encap-sport + - + name: encap-dport + - + name: collect-metadata + - + name: fwmark - name: linkinfo-tun-attrs name-prefix: ifla-tun- @@ -2195,6 +2273,9 @@ protonum: 0 - value: ipip attribute-set: linkinfo-iptun-attrs + - + value: ip6tnl + attribute-set: linkinfo-ip6tnl-attrs - value: sit attribute-set: linkinfo-iptun-attrs @@ -2207,6 +2288,12 @@ protonum: 0 - value: vrf attribute-set: linkinfo-vrf-attrs + - + value: vti + attribute-set: linkinfo-vti-attrs + - + value: vti6 + attribute-set: linkinfo-vti6-attrs - value: netkit attribute-set: linkinfo-netkit-attrs -- 2.47.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 3/3] netlink: specs: rt_link: decode ip6tnl, vti and vti6 link attrs 2025-01-05 1:25 ` [PATCH net-next 3/3] netlink: specs: rt_link: decode ip6tnl, vti and vti6 link attrs Jakub Kicinski @ 2025-01-06 13:38 ` Donald Hunter 0 siblings, 0 replies; 10+ messages in thread From: Donald Hunter @ 2025-01-06 13:38 UTC (permalink / raw) To: Jakub Kicinski; +Cc: davem, netdev, edumazet, pabeni Jakub Kicinski <kuba@kernel.org> writes: > Some of our tests load vti and ip6tnl so not being able to decode > the link attrs gets in the way of using Python YNL for testing. > > Decode link attributes for ip6tnl, vti and vti6. > > ip6tnl uses IFLA_IPTUN_FLAGS as u32, while ipv4 and sit expect > a u16 attribute, so we have a (first?) subset type override... > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Donald Hunter <donald.hunter@gmail.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 0/3] tools: ynl: decode link types present in tests 2025-01-05 1:25 [PATCH net-next 0/3] tools: ynl: decode link types present in tests Jakub Kicinski ` (2 preceding siblings ...) 2025-01-05 1:25 ` [PATCH net-next 3/3] netlink: specs: rt_link: decode ip6tnl, vti and vti6 link attrs Jakub Kicinski @ 2025-01-06 15:53 ` Stanislav Fomichev 3 siblings, 0 replies; 10+ messages in thread From: Stanislav Fomichev @ 2025-01-06 15:53 UTC (permalink / raw) To: Jakub Kicinski; +Cc: davem, donald.hunter, netdev, edumazet, pabeni On 01/04, Jakub Kicinski wrote: > Using a kernel built for the net selftest target to run drivers/net > tests currently fails, because the net kernel automatically spawns > a handful of tunnel devices which YNL can't decode. > > Fill in those missing link types in rt_link. We need to extend subset > support a bit for it to work. > > Jakub Kicinski (3): > tools: ynl: correctly handle overrides of fields in subset > tools: ynl: print some information about attribute we can't parse > netlink: specs: rt_link: decode ip6tnl, vti and vti6 link attrs > > Documentation/netlink/specs/rt_link.yaml | 87 ++++++++++++++++++++++++ > tools/net/ynl/lib/nlspec.py | 5 +- > tools/net/ynl/lib/ynl.py | 72 +++++++++++--------- > 3 files changed, 129 insertions(+), 35 deletions(-) I've seen similar issues with (builtin) ip6tnl in my VMs, thanks for fixing! Acked-by: Stanislav Fomichev <sdf@fomichev.me> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-01-06 17:33 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-01-05 1:25 [PATCH net-next 0/3] tools: ynl: decode link types present in tests Jakub Kicinski 2025-01-05 1:25 ` [PATCH net-next 1/3] tools: ynl: correctly handle overrides of fields in subset Jakub Kicinski 2025-01-06 13:27 ` Donald Hunter 2025-01-06 15:36 ` Jakub Kicinski 2025-01-06 17:33 ` Donald Hunter 2025-01-05 1:25 ` [PATCH net-next 2/3] tools: ynl: print some information about attribute we can't parse Jakub Kicinski 2025-01-06 13:30 ` Donald Hunter 2025-01-05 1:25 ` [PATCH net-next 3/3] netlink: specs: rt_link: decode ip6tnl, vti and vti6 link attrs Jakub Kicinski 2025-01-06 13:38 ` Donald Hunter 2025-01-06 15:53 ` [PATCH net-next 0/3] tools: ynl: decode link types present in tests Stanislav Fomichev
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).