1*b82bfddcSMinxi Hou# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 2*b82bfddcSMinxi Hou--- 3*b82bfddcSMinxi Houname: ovs_packet 4*b82bfddcSMinxi Houversion: 1 5*b82bfddcSMinxi Houprotocol: genetlink-legacy 6*b82bfddcSMinxi Houuapi-header: linux/openvswitch.h 7*b82bfddcSMinxi Hou 8*b82bfddcSMinxi Houdoc: | 9*b82bfddcSMinxi Hou OVS packet execution over generic netlink. 10*b82bfddcSMinxi Hou 11*b82bfddcSMinxi Hou Only OVS_PACKET_CMD_EXECUTE is exposed as a genl operation. 12*b82bfddcSMinxi Hou OVS_PACKET_CMD_MISS and OVS_PACKET_CMD_ACTION are kernel-to-userspace 13*b82bfddcSMinxi Hou upcalls sent via genlmsg_unicast() to the vport's upcall_pid and have 14*b82bfddcSMinxi Hou no associated genl_ops or multicast group. 15*b82bfddcSMinxi Hou 16*b82bfddcSMinxi Hou Several attributes in the attribute set (userdata, egress-tun-key, len) 17*b82bfddcSMinxi Hou exist for the upcall path and are not used by the EXECUTE operation. 18*b82bfddcSMinxi Hou For EXECUTE, packet, key, and actions are mandatory (kernel returns 19*b82bfddcSMinxi Hou -EINVAL without them). 20*b82bfddcSMinxi Hou 21*b82bfddcSMinxi Houdefinitions: 22*b82bfddcSMinxi Hou - 23*b82bfddcSMinxi Hou name: ovs-header 24*b82bfddcSMinxi Hou type: struct 25*b82bfddcSMinxi Hou members: 26*b82bfddcSMinxi Hou - 27*b82bfddcSMinxi Hou name: dp-ifindex 28*b82bfddcSMinxi Hou type: u32 29*b82bfddcSMinxi Hou 30*b82bfddcSMinxi Houattribute-sets: 31*b82bfddcSMinxi Hou - 32*b82bfddcSMinxi Hou name: packet 33*b82bfddcSMinxi Hou name-prefix: ovs-packet-attr- 34*b82bfddcSMinxi Hou enum-name: ovs-packet-attr 35*b82bfddcSMinxi Hou attributes: 36*b82bfddcSMinxi Hou - 37*b82bfddcSMinxi Hou name: packet 38*b82bfddcSMinxi Hou type: binary 39*b82bfddcSMinxi Hou doc: Packet data, from the start of the Ethernet header. 40*b82bfddcSMinxi Hou checks: 41*b82bfddcSMinxi Hou min-len: 14 42*b82bfddcSMinxi Hou - 43*b82bfddcSMinxi Hou name: key 44*b82bfddcSMinxi Hou type: binary 45*b82bfddcSMinxi Hou doc: | 46*b82bfddcSMinxi Hou Nested OVS_KEY_ATTR_* attributes, extracted flow key. 47*b82bfddcSMinxi Hou Defined as binary because the key attribute-set belongs to the 48*b82bfddcSMinxi Hou ovs_flow family spec; cross-spec references are not supported. 49*b82bfddcSMinxi Hou - 50*b82bfddcSMinxi Hou name: actions 51*b82bfddcSMinxi Hou type: binary 52*b82bfddcSMinxi Hou doc: | 53*b82bfddcSMinxi Hou Nested OVS_ACTION_ATTR_* attributes. 54*b82bfddcSMinxi Hou Defined as binary for the same reason as key. 55*b82bfddcSMinxi Hou - 56*b82bfddcSMinxi Hou name: userdata 57*b82bfddcSMinxi Hou type: binary 58*b82bfddcSMinxi Hou doc: Opaque userspace cookie from OVS_USERSPACE_ATTR_USERDATA. 59*b82bfddcSMinxi Hou - 60*b82bfddcSMinxi Hou name: egress-tun-key 61*b82bfddcSMinxi Hou type: binary 62*b82bfddcSMinxi Hou doc: Nested OVS_TUNNEL_KEY_ATTR_* for output tunnel metadata. 63*b82bfddcSMinxi Hou - 64*b82bfddcSMinxi Hou name: unused1 65*b82bfddcSMinxi Hou type: unused 66*b82bfddcSMinxi Hou - 67*b82bfddcSMinxi Hou name: unused2 68*b82bfddcSMinxi Hou type: unused 69*b82bfddcSMinxi Hou - 70*b82bfddcSMinxi Hou name: probe 71*b82bfddcSMinxi Hou type: flag 72*b82bfddcSMinxi Hou doc: Packet operation is a feature probe, error logging suppressed. 73*b82bfddcSMinxi Hou - 74*b82bfddcSMinxi Hou name: mru 75*b82bfddcSMinxi Hou type: u16 76*b82bfddcSMinxi Hou doc: Maximum received IP fragment size. 77*b82bfddcSMinxi Hou - 78*b82bfddcSMinxi Hou name: len 79*b82bfddcSMinxi Hou type: u32 80*b82bfddcSMinxi Hou doc: Packet size before truncation. 81*b82bfddcSMinxi Hou - 82*b82bfddcSMinxi Hou name: hash 83*b82bfddcSMinxi Hou type: u64 84*b82bfddcSMinxi Hou doc: Packet hash, low 32 bits are skb hash, upper bits are flags. 85*b82bfddcSMinxi Hou - 86*b82bfddcSMinxi Hou name: upcall-pid 87*b82bfddcSMinxi Hou type: u32 88*b82bfddcSMinxi Hou doc: Netlink PID to use for upcalls during EXECUTE processing. 89*b82bfddcSMinxi Hou 90*b82bfddcSMinxi Houoperations: 91*b82bfddcSMinxi Hou fixed-header: ovs-header 92*b82bfddcSMinxi Hou name-prefix: ovs-packet-cmd- 93*b82bfddcSMinxi Hou list: 94*b82bfddcSMinxi Hou - 95*b82bfddcSMinxi Hou name: miss 96*b82bfddcSMinxi Hou doc: Notify userspace of a flow table miss for a received packet. 97*b82bfddcSMinxi Hou value: 1 98*b82bfddcSMinxi Hou attribute-set: packet 99*b82bfddcSMinxi Hou event: 100*b82bfddcSMinxi Hou attributes: &event-attrs 101*b82bfddcSMinxi Hou - packet 102*b82bfddcSMinxi Hou - key 103*b82bfddcSMinxi Hou - userdata 104*b82bfddcSMinxi Hou - actions 105*b82bfddcSMinxi Hou - egress-tun-key 106*b82bfddcSMinxi Hou - mru 107*b82bfddcSMinxi Hou - len 108*b82bfddcSMinxi Hou - hash 109*b82bfddcSMinxi Hou - 110*b82bfddcSMinxi Hou name: action 111*b82bfddcSMinxi Hou doc: Notify userspace as requested by an OVS_ACTION_ATTR_USERSPACE action. 112*b82bfddcSMinxi Hou value: 2 113*b82bfddcSMinxi Hou attribute-set: packet 114*b82bfddcSMinxi Hou event: 115*b82bfddcSMinxi Hou attributes: *event-attrs 116*b82bfddcSMinxi Hou - 117*b82bfddcSMinxi Hou name: execute 118*b82bfddcSMinxi Hou doc: Apply actions to a packet. 119*b82bfddcSMinxi Hou value: 3 120*b82bfddcSMinxi Hou attribute-set: packet 121*b82bfddcSMinxi Hou do: 122*b82bfddcSMinxi Hou request: 123*b82bfddcSMinxi Hou attributes: 124*b82bfddcSMinxi Hou - packet 125*b82bfddcSMinxi Hou - key 126*b82bfddcSMinxi Hou - actions 127*b82bfddcSMinxi Hou - probe 128*b82bfddcSMinxi Hou - mru 129*b82bfddcSMinxi Hou - hash 130*b82bfddcSMinxi Hou - upcall-pid 131