diff options
| author | Asbjørn Sloth Tønnesen <ast@fiberby.net> | 2025-09-15 14:42:55 +0000 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2025-09-16 08:16:57 -0700 |
| commit | 52550d518d2454bf0af0b79ca54b6d38f2d94777 (patch) | |
| tree | 451388d8dbc45c3d9dfb9cfd7141d162b946cb88 /tools/net/ynl/pyynl/lib/ynl.py | |
| parent | tools: ynl: encode indexed-arrays (diff) | |
| download | linux-52550d518d2454bf0af0b79ca54b6d38f2d94777.tar.gz linux-52550d518d2454bf0af0b79ca54b6d38f2d94777.zip | |
tools: ynl: decode hex input
This patch adds support for decoding hex input, so
that binary attributes can be read through --json.
Example (using future wireguard.yaml):
$ sudo ./tools/net/ynl/pyynl/cli.py --family wireguard \
--do set-device --json '{"ifindex":3,
"private-key":"2a ae 6c 35 c9 4f cf <... to 32 bytes>"}'
In order to somewhat mirror what is done in _formatted_string(),
then for non-binary attributes attempt to convert it to an int.
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-11-ast@fiberby.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/net/ynl/pyynl/lib/ynl.py')
| -rw-r--r-- | tools/net/ynl/pyynl/lib/ynl.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/net/ynl/pyynl/lib/ynl.py b/tools/net/ynl/pyynl/lib/ynl.py index 9fd83f8b091f..707753e371e2 100644 --- a/tools/net/ynl/pyynl/lib/ynl.py +++ b/tools/net/ynl/pyynl/lib/ynl.py @@ -971,6 +971,11 @@ class YnlFamily(SpecFamily): raw = ip.packed else: raw = int(ip) + elif attr_spec.display_hint == 'hex': + if attr_spec['type'] == 'binary': + raw = bytes.fromhex(string) + else: + raw = int(string, 16) else: raise Exception(f"Display hint '{attr_spec.display_hint}' not implemented" f" when parsing '{attr_spec['name']}'") |
