Commit 6907217a authored by Donald Hunter's avatar Donald Hunter Committed by Jakub Kicinski
Browse files

netlink: specs: fixup openvswitch specs for code generation



Refine the ovs_* specs to align exactly with the ovs netlink UAPI
definitions to enable code generation.

Signed-off-by: default avatarDonald Hunter <donald.hunter@gmail.com>
Link: https://lore.kernel.org/r/20230615151405.77649-1-donald.hunter@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent e16ad981
Loading
Loading
Loading
Loading
+20 −10
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
name: ovs_datapath
version: 2
protocol: genetlink-legacy
uapi-header: linux/openvswitch.h

doc:
  OVS datapath configuration over generic netlink.
@@ -18,6 +19,7 @@ definitions:
  -
    name: user-features
    type: flags
    name-prefix: ovs-dp-f-
    entries:
      -
        name: unaligned
@@ -33,35 +35,37 @@ definitions:
        doc: Allow per-cpu dispatch of upcalls
  -
    name: datapath-stats
    enum-name: ovs-dp-stats
    type: struct
    members:
      -
        name: hit
        name: n-hit
        type: u64
      -
        name: missed
        name: n-missed
        type: u64
      -
        name: lost
        name: n-lost
        type: u64
      -
        name: flows
        name: n-flows
        type: u64
  -
    name: megaflow-stats
    enum-name: ovs-dp-megaflow-stats
    type: struct
    members:
      -
        name: mask-hit
        name: n-mask-hit
        type: u64
      -
        name: masks
        name: n-masks
        type: u32
      -
        name: padding
        type: u32
      -
        name: cache-hits
        name: n-cache-hit
        type: u64
      -
        name: pad1
@@ -70,6 +74,8 @@ definitions:
attribute-sets:
  -
    name: datapath
    name-prefix: ovs-dp-attr-
    enum-name: ovs-datapath-attrs
    attributes:
      -
        name: name
@@ -101,12 +107,16 @@ attribute-sets:
        name: per-cpu-pids
        type: binary
        sub-type: u32
      -
        name: ifindex
        type: u32

operations:
  fixed-header: ovs-header
  name-prefix: ovs-dp-cmd-
  list:
    -
      name: dp-get
      name: get
      doc: Get / dump OVS data path configuration and state
      value: 3
      attribute-set: datapath
@@ -125,7 +135,7 @@ operations:
            - per-cpu-pids
      dump: *dp-get-op
    -
      name: dp-new
      name: new
      doc: Create new OVS data path
      value: 1
      attribute-set: datapath
@@ -137,7 +147,7 @@ operations:
            - upcall-pid
            - user-features
    -
      name: dp-del
      name: del
      doc: Delete existing OVS data path
      value: 2
      attribute-set: datapath
+55 −13
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
name: ovs_flow
version: 1
protocol: genetlink-legacy
uapi-header: linux/openvswitch.h

doc:
  OVS flow configuration over generic netlink.
@@ -67,6 +68,7 @@ definitions:
        enum: ovs-frag-type
  -
    name: ovs-frag-type
    name-prefix: ovs-frag-type-
    type: enum
    entries:
      -
@@ -166,6 +168,7 @@ definitions:
        doc: Tag control identifier (TCI) to push.
  -
    name: ovs-ufid-flags
    name-prefix: ovs-ufid-f-
    type: flags
    entries:
      - omit-key
@@ -176,7 +179,7 @@ definitions:
    type: struct
    members:
      -
        name: hash-algorithm
        name: hash-alg
        type: u32
        doc: Algorithm used to compute hash prior to recirculation.
      -
@@ -198,13 +201,13 @@ definitions:
    type: struct
    members:
      -
        name: lse
        name: mpls-lse
        type: u32
        byte-order: big-endian
        doc: |
          MPLS label stack entry to push
      -
        name: ethertype
        name: mpls-ethertype
        type: u32
        byte-order: big-endian
        doc: |
@@ -216,13 +219,13 @@ definitions:
    type: struct
    members:
      -
        name: lse
        name: mpls-lse
        type: u32
        byte-order: big-endian
        doc: |
          MPLS label stack entry to push
      -
        name: ethertype
        name: mpls-ethertype
        type: u32
        byte-order: big-endian
        doc: |
@@ -237,6 +240,7 @@ definitions:
  -
    name: ct-state-flags
    type: flags
    name-prefix: ovs-cs-f-
    entries:
      -
        name: new
@@ -266,6 +270,8 @@ definitions:
attribute-sets:
  -
    name: flow-attrs
    enum-name: ovs-flow-attr
    name-prefix: ovs-flow-attr-
    attributes:
      -
        name: key
@@ -352,6 +358,8 @@ attribute-sets:

  -
    name: key-attrs
    enum-name: ovs-key-attr
    name-prefix: ovs-key-attr-
    attributes:
      -
        name: encap
@@ -481,6 +489,8 @@ attribute-sets:
        doc: struct ovs_key_ipv6_exthdr
  -
    name: action-attrs
    enum-name: ovs-action-attr
    name-prefix: ovs-action-attr-
    attributes:
      -
        name: output
@@ -608,6 +618,8 @@ attribute-sets:
        nested-attributes: dec-ttl-attrs
  -
    name: tunnel-key-attrs
    enum-name: ovs-tunnel-key-attr
    name-prefix: ovs-tunnel-key-attr-
    attributes:
      -
        name: id
@@ -676,6 +688,8 @@ attribute-sets:
        type: flag
  -
    name: check-pkt-len-attrs
    enum-name: ovs-check-pkt-len-attr
    name-prefix: ovs-check-pkt-len-attr-
    attributes:
      -
        name: pkt-len
@@ -690,6 +704,8 @@ attribute-sets:
        nested-attributes: action-attrs
  -
    name: sample-attrs
    enum-name: ovs-sample-attr
    name-prefix: ovs-sample-attr-
    attributes:
      -
        name: probability
@@ -700,6 +716,8 @@ attribute-sets:
        nested-attributes: action-attrs
  -
    name: userspace-attrs
    enum-name: ovs-userspace-attr
    name-prefix: ovs-userspace-attr-
    attributes:
      -
        name: pid
@@ -715,6 +733,8 @@ attribute-sets:
        type: flag
  -
    name: ovs-nsh-key-attrs
    enum-name: ovs-nsh-key-attr
    name-prefix: ovs-nsh-key-attr-
    attributes:
      -
        name: base
@@ -727,6 +747,8 @@ attribute-sets:
        type: binary
  -
    name: ct-attrs
    enum-name: ovs-ct-attr
    name-prefix: ovs-ct-attr-
    attributes:
      -
        name: commit
@@ -758,13 +780,15 @@ attribute-sets:
        type: string
  -
    name: nat-attrs
    enum-name: ovs-nat-attr
    name-prefix: ovs-nat-attr-
    attributes:
      -
        name: src
        type: binary
        type: flag
      -
        name: dst
        type: binary
        type: flag
      -
        name: ip-min
        type: binary
@@ -773,21 +797,23 @@ attribute-sets:
        type: binary
      -
        name: proto-min
        type: binary
        type: u16
      -
        name: proto-max
        type: binary
        type: u16
      -
        name: persistent
        type: binary
        type: flag
      -
        name: proto-hash
        type: binary
        type: flag
      -
        name: proto-random
        type: binary
        type: flag
  -
    name: dec-ttl-attrs
    enum-name: ovs-dec-ttl-attr
    name-prefix: ovs-dec-ttl-attr-
    attributes:
      -
        name: action
@@ -795,16 +821,19 @@ attribute-sets:
        nested-attributes: action-attrs
  -
    name: vxlan-ext-attrs
    enum-name: ovs-vxlan-ext-
    name-prefix: ovs-vxlan-ext-
    attributes:
      -
        name: gbp
        type: u32

operations:
  name-prefix: ovs-flow-cmd-
  fixed-header: ovs-header
  list:
    -
      name: flow-get
      name: get
      doc: Get / dump OVS flow configuration and state
      value: 3
      attribute-set: flow-attrs
@@ -824,6 +853,19 @@ operations:
            - stats
            - actions
      dump: *flow-get-op
    -
      name: new
      doc: Create OVS flow configuration in a data path
      value: 1
      attribute-set: flow-attrs
      do:
        request:
          attributes:
            - dp-ifindex
            - key
            - ufid
            - mask
            - actions

mcast-groups:
  list:
+12 −1
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
name: ovs_vport
version: 2
protocol: genetlink-legacy
uapi-header: linux/openvswitch.h

doc:
  OVS vport configuration over generic netlink.
@@ -18,10 +19,13 @@ definitions:
  -
    name: vport-type
    type: enum
    enum-name: ovs-vport-type
    name-prefix: ovs-vport-type-
    entries: [ unspec, netdev, internal, gre, vxlan, geneve ]
  -
    name: vport-stats
    type: struct
    enum-name: ovs-vport-stats
    members:
      -
        name: rx-packets
@@ -51,6 +55,8 @@ definitions:
attribute-sets:
  -
    name: vport-options
    enum-name: ovs-vport-options
    name-prefix: ovs-tunnel-attr-
    attributes:
      -
        name: dst-port
@@ -60,6 +66,8 @@ attribute-sets:
        type: u32
  -
    name: upcall-stats
    enum-name: ovs-vport-upcall-attr
    name-prefix: ovs-vport-upcall-attr-
    attributes:
      -
        name: success
@@ -70,6 +78,8 @@ attribute-sets:
        type: u64
  -
    name: vport
    name-prefix: ovs-vport-attr-
    enum-name: ovs-vport-attr
    attributes:
      -
        name: port-no
@@ -108,9 +118,10 @@ attribute-sets:
        nested-attributes: upcall-stats

operations:
  name-prefix: ovs-vport-cmd-
  list:
    -
      name: vport-get
      name: get
      doc: Get / dump OVS vport configuration and state
      value: 3
      attribute-set: vport