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 --- 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