• Jiri Pirko's avatar
    tools: ynl: allow user to pass enum string instead of scalar value · e8a6c515
    Jiri Pirko authored
    During decoding of messages coming from kernel, attribute values are
    converted to enum names in case the attribute type is enum of bitfield32.
    
    However, when user constructs json message, he has to pass plain scalar
    values. See "state" "selector" and "value" attributes in following
    examples:
    
    $ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml --do pin-set --json '{"id": 0, "parent-device": {"parent-id": 0, "state": 1}}'
    $ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/devlink.yaml --do port-set --json '{"bus-name": "pci", "dev-name": "0000:08:00.1", "port-index": 98304, "port-function": {"caps": {"selector": 1, "value": 1 }}}'
    
    Allow user to pass strings containing enum names, convert them to scalar
    values to be encoded into Netlink message:
    
    $ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/dpll.yaml --do pin-set --json '{"id": 0, "parent-device": {"parent-id": 0, "state": "connected"}}'
    $ sudo ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/devlink.yaml --do port-set --json '{"bus-name": "pci", "dev-name": "0000:08:00.1", "port-index": 98304, "port-function": {"caps": {"selector": ["roce-bit"], "value": ["roce-bit"] }}}'
    Signed-off-by: default avatarJiri Pirko <jiri@nvidia.com>
    Reviewed-by: default avatarDonald Hunter <donald.hunter@gmail.com>
    Link: https://lore.kernel.org/r/20240222134351.224704-4-jiri@resnulli.usSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    e8a6c515
ynl.py 32 KB