mirror of
https://github.com/torvalds/linux.git
synced 2025-08-15 14:11:42 +02: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: 7c59c9c8f2
("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>
173 lines
3.2 KiB
YAML
173 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
|