xref: /linux/Documentation/netlink/specs/ovs_packet.yaml (revision efe86f088f48f18c27b648e5724048947f3b7fb4)
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