| # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) | |
| --- | |
| name: ovs_packet | |
| version: 1 | |
| protocol: genetlink-legacy | |
| uapi-header: linux/openvswitch.h | |
| doc: | | |
| OVS packet execution over generic netlink. | |
| Only OVS_PACKET_CMD_EXECUTE is exposed as a genl operation. | |
| OVS_PACKET_CMD_MISS and OVS_PACKET_CMD_ACTION are kernel-to-userspace | |
| upcalls sent via genlmsg_unicast() to the vport's upcall_pid and have | |
| no associated genl_ops or multicast group. | |
| Several attributes in the attribute set (userdata, egress-tun-key, len) | |
| exist for the upcall path and are not used by the EXECUTE operation. | |
| For EXECUTE, packet, key, and actions are mandatory (kernel returns | |
| -EINVAL without them). | |
| definitions: | |
| - | |
| name: ovs-header | |
| type: struct | |
| members: | |
| - | |
| name: dp-ifindex | |
| type: u32 | |
| attribute-sets: | |
| - | |
| name: packet | |
| name-prefix: ovs-packet-attr- | |
| enum-name: ovs-packet-attr | |
| attributes: | |
| - | |
| name: packet | |
| type: binary | |
| doc: Packet data, from the start of the Ethernet header. | |
| checks: | |
| min-len: 14 | |
| - | |
| name: key | |
| type: binary | |
| doc: | | |
| Nested OVS_KEY_ATTR_* attributes, extracted flow key. | |
| Defined as binary because the key attribute-set belongs to the | |
| ovs_flow family spec; cross-spec references are not supported. | |
| - | |
| name: actions | |
| type: binary | |
| doc: | | |
| Nested OVS_ACTION_ATTR_* attributes. | |
| Defined as binary for the same reason as key. | |
| - | |
| name: userdata | |
| type: binary | |
| doc: Opaque userspace cookie from OVS_USERSPACE_ATTR_USERDATA. | |
| - | |
| name: egress-tun-key | |
| type: binary | |
| doc: Nested OVS_TUNNEL_KEY_ATTR_* for output tunnel metadata. | |
| - | |
| name: unused1 | |
| type: unused | |
| - | |
| name: unused2 | |
| type: unused | |
| - | |
| name: probe | |
| type: flag | |
| doc: Packet operation is a feature probe, error logging suppressed. | |
| - | |
| name: mru | |
| type: u16 | |
| doc: Maximum received IP fragment size. | |
| - | |
| name: len | |
| type: u32 | |
| doc: Packet size before truncation. | |
| - | |
| name: hash | |
| type: u64 | |
| doc: Packet hash, low 32 bits are skb hash, upper bits are flags. | |
| - | |
| name: upcall-pid | |
| type: u32 | |
| doc: Netlink PID to use for upcalls during EXECUTE processing. | |
| operations: | |
| fixed-header: ovs-header | |
| name-prefix: ovs-packet-cmd- | |
| list: | |
| - | |
| name: miss | |
| doc: Notify userspace of a flow table miss for a received packet. | |
| value: 1 | |
| attribute-set: packet | |
| event: | |
| attributes: &event-attrs | |
| - packet | |
| - key | |
| - userdata | |
| - actions | |
| - egress-tun-key | |
| - mru | |
| - len | |
| - hash | |
| - | |
| name: action | |
| doc: Notify userspace as requested by an OVS_ACTION_ATTR_USERSPACE action. | |
| value: 2 | |
| attribute-set: packet | |
| event: | |
| attributes: *event-attrs | |
| - | |
| name: execute | |
| doc: Apply actions to a packet. | |
| value: 3 | |
| attribute-set: packet | |
| do: | |
| request: | |
| attributes: | |
| - packet | |
| - key | |
| - actions | |
| - probe | |
| - mru | |
| - hash | |
| - upcall-pid |