tools/net/ynl: Add support for nested structs
authorDonald Hunter <donald.hunter@gmail.com>
Mon, 29 Jan 2024 22:34:55 +0000 (22:34 +0000)
committerJakub Kicinski <kuba@kernel.org>
Thu, 1 Feb 2024 05:19:19 +0000 (21:19 -0800)
commitbf08f32c8cedb12a23efcdc2c9584601d7030e16
tree11b33fc945ef2162ff027898c241437ab065f795
parent971c3eeaf668ed312d032d12becb106982d2b2bd
tools/net/ynl: Add support for nested structs

Make it possible for struct definitions to reference other struct
definitions ofr binary members. For example, the tbf qdisc uses this
struct definition for its parms attribute:

  -
    name: tc-tbf-qopt
    type: struct
    members:
      -
        name: rate
        type: binary
        struct: tc-ratespec
      -
        name: peakrate
        type: binary
        struct: tc-ratespec
      -
        name: limit
        type: u32
      -
        name: buffer
        type: u32
      -
        name: mtu
        type: u32

This adds the necessary schema changes and adds nested struct encoding
and decoding to ynl.

Signed-off-by: Donald Hunter <donald.hunter@gmail.com>
Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20240129223458.52046-11-donald.hunter@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Documentation/netlink/netlink-raw.yaml
tools/net/ynl/lib/nlspec.py
tools/net/ynl/lib/ynl.py