# 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