mirror of https://github.com/torvalds/linux.git
tools: ynl: add ipv4-or-v6 display hint
The attribute WGALLOWEDIP_A_IPADDR can contain either an IPv4 or an IPv6 address depending on WGALLOWEDIP_A_FAMILY, however in practice it is enough to look at the attribute length. This patch implements an ipv4-or-v6 display hint, that can deal with this kind of attribute. It only implements this display hint for genetlink-legacy, it can be added to other protocol variants if needed, but we don't want to encourage it's use. Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> Reviewed-by: Donald Hunter <donald.hunter@gmail.com> Link: https://patch.msgid.link/20250915144301.725949-12-ast@fiberby.net Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
52550d518d
commit
1b255e1bea
|
|
@ -154,7 +154,7 @@ properties:
|
|||
Optional format indicator that is intended only for choosing
|
||||
the right formatting mechanism when displaying values of this
|
||||
type.
|
||||
enum: [ hex, mac, fddi, ipv4, ipv6, uuid ]
|
||||
enum: [ hex, mac, fddi, ipv4, ipv6, ipv4-or-v6, uuid ]
|
||||
struct:
|
||||
description: Name of the nested struct type.
|
||||
type: string
|
||||
|
|
|
|||
|
|
@ -956,7 +956,7 @@ class YnlFamily(SpecFamily):
|
|||
formatted = hex(raw)
|
||||
else:
|
||||
formatted = bytes.hex(raw, ' ')
|
||||
elif display_hint in [ 'ipv4', 'ipv6' ]:
|
||||
elif display_hint in [ 'ipv4', 'ipv6', 'ipv4-or-v6' ]:
|
||||
formatted = format(ipaddress.ip_address(raw))
|
||||
elif display_hint == 'uuid':
|
||||
formatted = str(uuid.UUID(bytes=raw))
|
||||
|
|
@ -965,7 +965,7 @@ class YnlFamily(SpecFamily):
|
|||
return formatted
|
||||
|
||||
def _from_string(self, string, attr_spec):
|
||||
if attr_spec.display_hint in ['ipv4', 'ipv6']:
|
||||
if attr_spec.display_hint in ['ipv4', 'ipv6', 'ipv4-or-v6']:
|
||||
ip = ipaddress.ip_address(string)
|
||||
if attr_spec['type'] == 'binary':
|
||||
raw = ip.packed
|
||||
|
|
|
|||
Loading…
Reference in New Issue