* [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations
@ 2026-10-25 10:34 Minxi Hou
2026-10-25 10:34 ` [PATCH net-next v4 1/2] netlink: specs: add ovs_flow del and set operations Minxi Hou
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Minxi Hou @ 2026-10-25 10:34 UTC (permalink / raw)
To: netdev
Cc: Donald Hunter, Jakub Kicinski, David S . Miller, Eric Dumazet,
Paolo Abeni, Simon Horman
The ovs specs describe get and new but not the set and del commands the
kernel has registered since the families were added. This series adds
them and names the attributes each handler reads. Nothing here changes
the kernel.
v4:
https://lore.kernel.org/netdev/20261015024132.698658-1-houminxi@gmail.com/
- ovs_vport set lists port-no and ifindex. lookup_vport() finds a
vport by name or by port number, and returns -EOPNOTSUPP as soon as
it sees an ifindex, before the type or the options are looked at.
- ovs_datapath new lists masks-cache-size, per-cpu-pids and ifindex.
new calls ovs_dp_change(), which reads the first two, and reads
ifindex itself.
- ovs_flow get lists probe. ovs_flow_cmd_get() reads it to decide
whether to log.
- The key attribute doc now says a new request needs a key even when
it finds an existing flow and replaces its actions, and that a dump
reads neither the key nor the ufid. A del with neither flushes the
data path, and the del operation doc says so too.
- The commit message no longer says the uapi header was updated. The
same sentence in include/uapi/linux/openvswitch.h is unchanged.
v3:
https://lore.kernel.org/netdev/20261012065552.2426415-1-houminxi@gmail.com/
- no change since v2.
v2:
https://lore.kernel.org/netdev/20261006130533.1620706-1-houminxi@gmail.com/
- ovs_flow new lists ufid-flags and probe, which ovs_flow_cmd_new()
reads.
- The commit message now says probe changes from binary to flag, and
that new needs CAP_NET_ADMIN.
- The key attribute doc no longer says a key is required for every
request except a dump. get, set and del accept a ufid with no key,
and only a new flow needs a key. A set that replaces the actions
still needs a key.
Signed-off-by: Minxi Hou <houminxi@gmail.com>
Minxi Hou (2):
netlink: specs: add ovs_flow del and set operations
netlink: specs: add ovs datapath and vport set operations
Documentation/netlink/specs/ovs_datapath.yaml | 21 +++++++++
Documentation/netlink/specs/ovs_flow.yaml | 46 ++++++++++++++++++-
Documentation/netlink/specs/ovs_vport.yaml | 21 +++++++++
3 files changed, 86 insertions(+), 2 deletions(-)
base-commit: 734bef548a96e8774d6eef5dfa2026c6edc4e80b
--
2.56.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net-next v4 1/2] netlink: specs: add ovs_flow del and set operations
2026-10-25 10:34 [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations Minxi Hou
@ 2026-10-25 10:34 ` Minxi Hou
2026-10-25 10:34 ` [PATCH net-next v4 2/2] netlink: specs: add ovs datapath and vport " Minxi Hou
2026-10-27 0:07 ` [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations Jakub Kicinski
2 siblings, 0 replies; 4+ messages in thread
From: Minxi Hou @ 2026-10-25 10:34 UTC (permalink / raw)
To: netdev
Cc: Donald Hunter, Jakub Kicinski, David S . Miller, Eric Dumazet,
Paolo Abeni, Simon Horman
The ovs_flow spec only described get and new, so a YNL client could
not delete or modify a flow. The kernel has had both commands since
the family was added: del flushes the data path when neither a key nor
a ufid is given, and set looks a flow up by key or ufid.
Name the attributes each command reads. new reads ufid-flags and probe
as well as the key, so both are in its request list. new, del and set
all need CAP_NET_ADMIN.
probe was binary in the spec while the kernel policy is NLA_FLAG. It
is a flag now, which changes how a YNL client encodes it: a false flag
is left out, where a binary attribute was sent empty.
The key attribute doc in this spec said a key is required for every
request except a dump. The kernel accepts a ufid with no key for get,
set and del. A new request needs a key, including one that finds an
existing flow and replaces its actions, and a set that replaces the
actions needs a key too. The doc in this spec says so now. The same
sentence in the uapi header is unchanged.
Signed-off-by: Minxi Hou <houminxi@gmail.com>
---
Documentation/netlink/specs/ovs_flow.yaml | 46 ++++++++++++++++++++++-
1 file changed, 44 insertions(+), 2 deletions(-)
diff --git a/Documentation/netlink/specs/ovs_flow.yaml b/Documentation/netlink/specs/ovs_flow.yaml
index 951837b72e1d..dd403cca4006 100644
--- a/Documentation/netlink/specs/ovs_flow.yaml
+++ b/Documentation/netlink/specs/ovs_flow.yaml
@@ -384,7 +384,11 @@ attribute-sets:
nested-attributes: key-attrs
doc: |
Nested attributes specifying the flow key. Always present in
- notifications. Required for all requests (except dumps).
+ notifications. A get, set or del may carry a ufid instead of a
+ key. A new request needs a key, including one that finds an
+ existing flow and replaces its actions. A set that replaces the
+ actions needs a key too. A dump reads neither the key nor the
+ ufid. A del that carries neither flushes the data path.
-
name: actions
type: nest
@@ -438,7 +442,7 @@ attribute-sets:
are exact match bits.
-
name: probe
- type: binary
+ type: flag
doc: |
Flow operation is a feature probe, error logging should be suppressed.
-
@@ -975,6 +979,7 @@ operations:
- key
- ufid
- ufid-flags
+ - probe
reply:
attributes:
- key
@@ -988,6 +993,7 @@ operations:
doc: Create OVS flow configuration in a data path
value: 1
attribute-set: flow-attrs
+ flags: [uns-admin-perm]
do:
request:
attributes:
@@ -995,6 +1001,42 @@ operations:
- ufid
- mask
- actions
+ - ufid-flags
+ - probe
+ -
+ name: del
+ doc: |
+ Delete one flow, or every flow in the data path. A request with
+ neither a key nor a ufid flushes the data path.
+ value: 2
+ attribute-set: flow-attrs
+ flags: [uns-admin-perm]
+ do:
+ request:
+ attributes:
+ - key
+ - ufid
+ - ufid-flags
+ - probe
+ -
+ name: set
+ doc: |
+ Modify an existing flow. The kernel rejects the request with
+ -EINVAL when it carries neither a key nor a ufid. Replacing the
+ actions also needs a key: a ufid on its own is not enough.
+ value: 4
+ attribute-set: flow-attrs
+ flags: [uns-admin-perm]
+ do:
+ request:
+ attributes:
+ - key
+ - ufid
+ - mask
+ - actions
+ - ufid-flags
+ - clear
+ - probe
mcast-groups:
list:
--
2.56.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net-next v4 2/2] netlink: specs: add ovs datapath and vport set operations
2026-10-25 10:34 [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations Minxi Hou
2026-10-25 10:34 ` [PATCH net-next v4 1/2] netlink: specs: add ovs_flow del and set operations Minxi Hou
@ 2026-10-25 10:34 ` Minxi Hou
2026-10-27 0:07 ` [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations Jakub Kicinski
2 siblings, 0 replies; 4+ messages in thread
From: Minxi Hou @ 2026-10-25 10:34 UTC (permalink / raw)
To: netdev
Cc: Donald Hunter, Jakub Kicinski, David S . Miller, Eric Dumazet,
Paolo Abeni, Simon Horman
Both families register a SET command that the spec never described, so
a YNL client could not modify an existing datapath or vport. The kernel
handlers take CAP_NET_ADMIN through GENL_UNS_ADMIN_PERM.
In the kernel, the datapath SET command changes the user features, the
masks cache size and the per-cpu upcall pids. The vport SET command
changes the upcall pid. The kernel rejects an ifindex before it looks
at the type or the options, rejects a type change, and rejects options.
Signed-off-by: Minxi Hou <houminxi@gmail.com>
---
Documentation/netlink/specs/ovs_datapath.yaml | 21 +++++++++++++++++++
Documentation/netlink/specs/ovs_vport.yaml | 21 +++++++++++++++++++
2 files changed, 42 insertions(+)
diff --git a/Documentation/netlink/specs/ovs_datapath.yaml b/Documentation/netlink/specs/ovs_datapath.yaml
index f7b3671991e6..83f6b060ed75 100644
--- a/Documentation/netlink/specs/ovs_datapath.yaml
+++ b/Documentation/netlink/specs/ovs_datapath.yaml
@@ -138,21 +138,42 @@ operations:
doc: Create new OVS data path
value: 1
attribute-set: datapath
+ flags: [uns-admin-perm]
do:
request:
attributes:
- name
- upcall-pid
- user-features
+ - masks-cache-size
+ - per-cpu-pids
+ - ifindex
-
name: del
doc: Delete existing OVS data path
value: 2
attribute-set: datapath
+ flags: [uns-admin-perm]
do:
request:
attributes:
- name
+ -
+ name: set
+ doc: |
+ Modify an existing OVS data path. The kernel treats a missing
+ user-features attribute as zero and clears the previously set
+ features.
+ value: 4
+ attribute-set: datapath
+ flags: [uns-admin-perm]
+ do:
+ request:
+ attributes:
+ - name
+ - user-features
+ - masks-cache-size
+ - per-cpu-pids
mcast-groups:
list:
diff --git a/Documentation/netlink/specs/ovs_vport.yaml b/Documentation/netlink/specs/ovs_vport.yaml
index fa975f8821b6..189cb5b99aee 100644
--- a/Documentation/netlink/specs/ovs_vport.yaml
+++ b/Documentation/netlink/specs/ovs_vport.yaml
@@ -128,6 +128,7 @@ operations:
name: new
doc: Create a new OVS vport
attribute-set: vport
+ flags: [uns-admin-perm]
do:
request:
attributes:
@@ -140,6 +141,7 @@ operations:
name: del
doc: Delete existing OVS vport from a data path
attribute-set: vport
+ flags: [uns-admin-perm]
do:
request:
attributes:
@@ -165,6 +167,25 @@ operations:
- netnsid
- upcall-stats
dump: *vport-get-op
+ -
+ name: set
+ doc: |
+ Modify an existing OVS vport. The kernel rejects an ifindex with
+ -EOPNOTSUPP, before it looks at the type or the options. It rejects
+ options with -EOPNOTSUPP, and rejects a type that differs from the
+ vport's type with -EINVAL.
+ value: 4
+ attribute-set: vport
+ flags: [uns-admin-perm]
+ do:
+ request:
+ attributes:
+ - name
+ - type
+ - options
+ - upcall-pid
+ - port-no
+ - ifindex
mcast-groups:
list:
--
2.56.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations
2026-10-25 10:34 [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations Minxi Hou
2026-10-25 10:34 ` [PATCH net-next v4 1/2] netlink: specs: add ovs_flow del and set operations Minxi Hou
2026-10-25 10:34 ` [PATCH net-next v4 2/2] netlink: specs: add ovs datapath and vport " Minxi Hou
@ 2026-10-27 0:07 ` Jakub Kicinski
2 siblings, 0 replies; 4+ messages in thread
From: Jakub Kicinski @ 2026-10-27 0:07 UTC (permalink / raw)
To: Minxi Hou
Cc: netdev, Donald Hunter, David S . Miller, Eric Dumazet,
Paolo Abeni, Simon Horman
On Sun, 25 Oct 2026 06:34:07 -0400 Minxi Hou wrote:
> The ovs specs describe get and new but not the set and del commands the
> kernel has registered since the families were added. This series adds
> them and names the attributes each handler reads. Nothing here changes
> the kernel.
## Form letter - net-next-closed
The merge window for Linux v7.4 has begun, and the net-next
tree is now closed for new drivers, features, code refactoring
and optimizations. We are currently accepting bug fixes only.
Please repost when net-next reopens. There is some uncertainty
about how long this merge window will last, so please check
https://netdev.bots.linux.dev/net-next.html
before reposting. net-next _may_ reopen on Nov 2nd.
See: https://www.kernel.org/doc/html/next/process/maintainer-netdev.html#development-cycle
--
pw-bot: defer
pv-bot: closed
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-10-27 0:07 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-25 10:34 [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations Minxi Hou
2026-10-25 10:34 ` [PATCH net-next v4 1/2] netlink: specs: add ovs_flow del and set operations Minxi Hou
2026-10-25 10:34 ` [PATCH net-next v4 2/2] netlink: specs: add ovs datapath and vport " Minxi Hou
2026-10-27 0:07 ` [PATCH net-next v4 0/2] netlink: specs: fill in the missing ovs operations Jakub Kicinski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox