Skip to content

Commit

Permalink
Merge branch 'ynl-add-support-for-user-headers-and-struct-attrs'
Browse files Browse the repository at this point in the history
Donald Hunter says:

====================
ynl: add support for user headers and struct attrs

Add support for user headers and struct attrs to YNL. This patchset adds
features to ynl and add a partial spec for openvswitch that demonstrates
use of the features.

Patch 1-4 add features to ynl
Patch 5 adds partial openvswitch specs that demonstrate the new features
Patch 6-7 add documentation for legacy structs and for sub-type
====================

Link: https://lore.kernel.org/r/20230327083138.96044-1-donald.hunter@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Jakub Kicinski committed Mar 29, 2023
2 parents de74945 + 04eac39 commit 35fae44
Show file tree
Hide file tree
Showing 7 changed files with 516 additions and 18 deletions.
16 changes: 16 additions & 0 deletions Documentation/netlink/genetlink-legacy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,11 @@ properties:
description: Max length for a string or a binary attribute.
$ref: '#/$defs/len-or-define'
sub-type: *attr-type
# Start genetlink-legacy
struct:
description: Name of the struct type used for the attribute.
type: string
# End genetlink-legacy

# Make sure name-prefix does not appear in subsets (subsets inherit naming)
dependencies:
Expand Down Expand Up @@ -256,6 +261,14 @@ properties:
async-enum:
description: Name for the enum type with notifications/events.
type: string
# Start genetlink-legacy
fixed-header: &fixed-header
description: |
Name of the structure defining the optional fixed-length protocol
header. This header is placed in a message after the netlink and
genetlink headers and before any attributes.
type: string
# End genetlink-legacy
list:
description: List of commands
type: array
Expand Down Expand Up @@ -288,6 +301,9 @@ properties:
type: array
items:
enum: [ strict, dump ]
# Start genetlink-legacy
fixed-header: *fixed-header
# End genetlink-legacy
do: &subop-type
description: Main command handler.
type: object
Expand Down
153 changes: 153 additions & 0 deletions Documentation/netlink/specs/ovs_datapath.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)

name: ovs_datapath
version: 2
protocol: genetlink-legacy

doc:
OVS datapath configuration over generic netlink.

definitions:
-
name: ovs-header
type: struct
members:
-
name: dp-ifindex
type: u32
-
name: user-features
type: flags
entries:
-
name: unaligned
doc: Allow last Netlink attribute to be unaligned
-
name: vport-pids
doc: Allow datapath to associate multiple Netlink PIDs to each vport
-
name: tc-recirc-sharing
doc: Allow tc offload recirc sharing
-
name: dispatch-upcall-per-cpu
doc: Allow per-cpu dispatch of upcalls
-
name: datapath-stats
type: struct
members:
-
name: hit
type: u64
-
name: missed
type: u64
-
name: lost
type: u64
-
name: flows
type: u64
-
name: megaflow-stats
type: struct
members:
-
name: mask-hit
type: u64
-
name: masks
type: u32
-
name: padding
type: u32
-
name: cache-hits
type: u64
-
name: pad1
type: u64

attribute-sets:
-
name: datapath
attributes:
-
name: name
type: string
-
name: upcall-pid
doc: upcall pid
type: u32
-
name: stats
type: binary
struct: datapath-stats
-
name: megaflow-stats
type: binary
struct: megaflow-stats
-
name: user-features
type: u32
enum: user-features
enum-as-flags: true
-
name: pad
type: unused
-
name: masks-cache-size
type: u32
-
name: per-cpu-pids
type: binary
sub-type: u32

operations:
fixed-header: ovs-header
list:
-
name: dp-get
doc: Get / dump OVS data path configuration and state
value: 3
attribute-set: datapath
do: &dp-get-op
request:
attributes:
- name
reply:
attributes:
- name
- upcall-pid
- stats
- megaflow-stats
- user-features
- masks-cache-size
- per-cpu-pids
dump: *dp-get-op
-
name: dp-new
doc: Create new OVS data path
value: 1
attribute-set: datapath
do:
request:
attributes:
- dp-ifindex
- name
- upcall-pid
- user-features
-
name: dp-del
doc: Delete existing OVS data path
value: 2
attribute-set: datapath
do:
request:
attributes:
- dp-ifindex
- name

mcast-groups:
list:
-
name: ovs_datapath
139 changes: 139 additions & 0 deletions Documentation/netlink/specs/ovs_vport.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)

name: ovs_vport
version: 2
protocol: genetlink-legacy

doc:
OVS vport configuration over generic netlink.

definitions:
-
name: ovs-header
type: struct
members:
-
name: dp-ifindex
type: u32
-
name: vport-type
type: enum
entries: [ unspec, netdev, internal, gre, vxlan, geneve ]
-
name: vport-stats
type: struct
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
attributes:
-
name: dst-port
type: u32
-
name: extension
type: u32
-
name: upcall-stats
attributes:
-
name: success
type: u64
value: 0
-
name: fail
type: u64
-
name: vport
attributes:
-
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:
list:
-
name: vport-get
doc: Get / dump OVS vport configuration and state
value: 3
attribute-set: vport
fixed-header: ovs-header
do: &vport-get-op
request:
attributes:
- dp-ifindex
- name
reply: &dev-all
attributes:
- dp-ifindex
- port-no
- type
- name
- upcall-pid
- stats
- ifindex
- netnsid
- upcall-stats
dump: *vport-get-op

mcast-groups:
list:
-
name: ovs_vport
Loading

0 comments on commit 35fae44

Please sign in to comment.