mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00

We started generating C code for OvS a while back, but actually C codegen only supports fixed headers specified at the family level right now (schema also allows specifying them per op). ovs_flow and ovs_datapath already specify the fixed header at the family level but ovs_vport does it per op. Move the property, all ops use the same header. This ensures YNL C sees the correct hdr_len: const struct ynl_family ynl_ovs_vport_family = { .name = "ovs_vport", - .hdr_len = sizeof(struct genlmsghdr), + .hdr_len = sizeof(struct genlmsghdr) + sizeof(struct ovs_header), }; Fixes: 7c59c9c8f202 ("tools: ynl: generate code for ovs families") Link: https://patch.msgid.link/20250409145541.580674-1-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
174 lines
3.2 KiB
YAML
174 lines
3.2 KiB
YAML
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
|
|
|
|
name: ovs_vport
|
|
version: 2
|
|
protocol: genetlink-legacy
|
|
uapi-header: linux/openvswitch.h
|
|
|
|
doc:
|
|
OVS vport configuration over generic netlink.
|
|
|
|
definitions:
|
|
-
|
|
name: ovs-header
|
|
type: struct
|
|
members:
|
|
-
|
|
name: dp-ifindex
|
|
type: u32
|
|
-
|
|
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
|
|
type: u64
|
|
-
|
|
name: tx-packets
|
|
type: u64
|
|
-
|
|
name: rx-bytes
|
|
type: u64
|
|
-
|
|
name: tx-bytes
|
|
type: u64
|
|
-
|
|
name: rx-errors
|
|
type: u64
|
|
-
|
|
name: tx-errors
|
|
type: u64
|
|
-
|
|
name: rx-dropped
|
|
type: u64
|
|
-
|
|
name: tx-dropped
|
|
type: u64
|
|
|
|
attribute-sets:
|
|
-
|
|
name: vport-options
|
|
enum-name: ovs-vport-options
|
|
name-prefix: ovs-tunnel-attr-
|
|
attributes:
|
|
-
|
|
name: dst-port
|
|
type: u32
|
|
-
|
|
name: extension
|
|
type: u32
|
|
-
|
|
name: upcall-stats
|
|
enum-name: ovs-vport-upcall-attr
|
|
name-prefix: ovs-vport-upcall-attr-
|
|
attributes:
|
|
-
|
|
name: success
|
|
type: u64
|
|
value: 0
|
|
-
|
|
name: fail
|
|
type: u64
|
|
-
|
|
name: vport
|
|
name-prefix: ovs-vport-attr-
|
|
enum-name: ovs-vport-attr
|
|
attributes:
|
|
-
|
|
name: unspec
|
|
type: unused
|
|
value: 0
|
|
-
|
|
name: port-no
|
|
type: u32
|
|
-
|
|
name: type
|
|
type: u32
|
|
enum: vport-type
|
|
-
|
|
name: name
|
|
type: string
|
|
-
|
|
name: options
|
|
type: nest
|
|
nested-attributes: vport-options
|
|
-
|
|
name: upcall-pid
|
|
type: binary
|
|
sub-type: u32
|
|
-
|
|
name: stats
|
|
type: binary
|
|
struct: vport-stats
|
|
-
|
|
name: pad
|
|
type: unused
|
|
-
|
|
name: ifindex
|
|
type: u32
|
|
-
|
|
name: netnsid
|
|
type: u32
|
|
-
|
|
name: upcall-stats
|
|
type: nest
|
|
nested-attributes: upcall-stats
|
|
|
|
operations:
|
|
name-prefix: ovs-vport-cmd-
|
|
fixed-header: ovs-header
|
|
list:
|
|
-
|
|
name: new
|
|
doc: Create a new OVS vport
|
|
attribute-set: vport
|
|
do:
|
|
request:
|
|
attributes:
|
|
- name
|
|
- type
|
|
- upcall-pid
|
|
- ifindex
|
|
- options
|
|
-
|
|
name: del
|
|
doc: Delete existing OVS vport from a data path
|
|
attribute-set: vport
|
|
do:
|
|
request:
|
|
attributes:
|
|
- port-no
|
|
- type
|
|
- name
|
|
-
|
|
name: get
|
|
doc: Get / dump OVS vport configuration and state
|
|
attribute-set: vport
|
|
do: &vport-get-op
|
|
request:
|
|
attributes:
|
|
- name
|
|
reply: &dev-all
|
|
attributes:
|
|
- port-no
|
|
- type
|
|
- name
|
|
- upcall-pid
|
|
- stats
|
|
- ifindex
|
|
- netnsid
|
|
- upcall-stats
|
|
dump: *vport-get-op
|
|
|
|
mcast-groups:
|
|
list:
|
|
-
|
|
name: ovs_vport
|