1*93b230b5SDonald Hunter# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2*93b230b5SDonald Hunter
3*93b230b5SDonald Huntername: ovs_flow
4*93b230b5SDonald Hunterversion: 1
5*93b230b5SDonald Hunterprotocol: genetlink-legacy
6*93b230b5SDonald Hunter
7*93b230b5SDonald Hunterdoc:
8*93b230b5SDonald Hunter  OVS flow configuration over generic netlink.
9*93b230b5SDonald Hunter
10*93b230b5SDonald Hunterdefinitions:
11*93b230b5SDonald Hunter  -
12*93b230b5SDonald Hunter    name: ovs-header
13*93b230b5SDonald Hunter    type: struct
14*93b230b5SDonald Hunter    doc: |
15*93b230b5SDonald Hunter      Header for OVS Generic Netlink messages.
16*93b230b5SDonald Hunter    members:
17*93b230b5SDonald Hunter      -
18*93b230b5SDonald Hunter        name: dp-ifindex
19*93b230b5SDonald Hunter        type: u32
20*93b230b5SDonald Hunter        doc: |
21*93b230b5SDonald Hunter          ifindex of local port for datapath (0 to make a request not specific
22*93b230b5SDonald Hunter          to a datapath).
23*93b230b5SDonald Hunter  -
24*93b230b5SDonald Hunter    name: ovs-flow-stats
25*93b230b5SDonald Hunter    type: struct
26*93b230b5SDonald Hunter    members:
27*93b230b5SDonald Hunter      -
28*93b230b5SDonald Hunter        name: n-packets
29*93b230b5SDonald Hunter        type: u64
30*93b230b5SDonald Hunter        doc: Number of matched packets.
31*93b230b5SDonald Hunter      -
32*93b230b5SDonald Hunter        name: n-bytes
33*93b230b5SDonald Hunter        type: u64
34*93b230b5SDonald Hunter        doc: Number of matched bytes.
35*93b230b5SDonald Hunter  -
36*93b230b5SDonald Hunter    name: ovs-key-mpls
37*93b230b5SDonald Hunter    type: struct
38*93b230b5SDonald Hunter    members:
39*93b230b5SDonald Hunter      -
40*93b230b5SDonald Hunter        name: mpls-lse
41*93b230b5SDonald Hunter        type: u32
42*93b230b5SDonald Hunter        byte-order: big-endian
43*93b230b5SDonald Hunter  -
44*93b230b5SDonald Hunter    name: ovs-key-ipv4
45*93b230b5SDonald Hunter    type: struct
46*93b230b5SDonald Hunter    members:
47*93b230b5SDonald Hunter      -
48*93b230b5SDonald Hunter        name: ipv4-src
49*93b230b5SDonald Hunter        type: u32
50*93b230b5SDonald Hunter        byte-order: big-endian
51*93b230b5SDonald Hunter      -
52*93b230b5SDonald Hunter        name: ipv4-dst
53*93b230b5SDonald Hunter        type: u32
54*93b230b5SDonald Hunter        byte-order: big-endian
55*93b230b5SDonald Hunter      -
56*93b230b5SDonald Hunter        name: ipv4-proto
57*93b230b5SDonald Hunter        type: u8
58*93b230b5SDonald Hunter      -
59*93b230b5SDonald Hunter        name: ipv4-tos
60*93b230b5SDonald Hunter        type: u8
61*93b230b5SDonald Hunter      -
62*93b230b5SDonald Hunter        name: ipv4-ttl
63*93b230b5SDonald Hunter        type: u8
64*93b230b5SDonald Hunter      -
65*93b230b5SDonald Hunter        name: ipv4-frag
66*93b230b5SDonald Hunter        type: u8
67*93b230b5SDonald Hunter        enum: ovs-frag-type
68*93b230b5SDonald Hunter  -
69*93b230b5SDonald Hunter    name: ovs-frag-type
70*93b230b5SDonald Hunter    type: enum
71*93b230b5SDonald Hunter    entries:
72*93b230b5SDonald Hunter      -
73*93b230b5SDonald Hunter        name: none
74*93b230b5SDonald Hunter        doc: Packet is not a fragment.
75*93b230b5SDonald Hunter      -
76*93b230b5SDonald Hunter        name: first
77*93b230b5SDonald Hunter        doc: Packet is a fragment with offset 0.
78*93b230b5SDonald Hunter      -
79*93b230b5SDonald Hunter        name: later
80*93b230b5SDonald Hunter        doc: Packet is a fragment with nonzero offset.
81*93b230b5SDonald Hunter      -
82*93b230b5SDonald Hunter        name: any
83*93b230b5SDonald Hunter        value: 255
84*93b230b5SDonald Hunter  -
85*93b230b5SDonald Hunter    name: ovs-key-tcp
86*93b230b5SDonald Hunter    type: struct
87*93b230b5SDonald Hunter    members:
88*93b230b5SDonald Hunter      -
89*93b230b5SDonald Hunter        name: tcp-src
90*93b230b5SDonald Hunter        type: u16
91*93b230b5SDonald Hunter        byte-order: big-endian
92*93b230b5SDonald Hunter      -
93*93b230b5SDonald Hunter        name: tcp-dst
94*93b230b5SDonald Hunter        type: u16
95*93b230b5SDonald Hunter        byte-order: big-endian
96*93b230b5SDonald Hunter  -
97*93b230b5SDonald Hunter    name: ovs-key-udp
98*93b230b5SDonald Hunter    type: struct
99*93b230b5SDonald Hunter    members:
100*93b230b5SDonald Hunter      -
101*93b230b5SDonald Hunter        name: udp-src
102*93b230b5SDonald Hunter        type: u16
103*93b230b5SDonald Hunter        byte-order: big-endian
104*93b230b5SDonald Hunter      -
105*93b230b5SDonald Hunter        name: udp-dst
106*93b230b5SDonald Hunter        type: u16
107*93b230b5SDonald Hunter        byte-order: big-endian
108*93b230b5SDonald Hunter  -
109*93b230b5SDonald Hunter    name: ovs-key-sctp
110*93b230b5SDonald Hunter    type: struct
111*93b230b5SDonald Hunter    members:
112*93b230b5SDonald Hunter      -
113*93b230b5SDonald Hunter        name: sctp-src
114*93b230b5SDonald Hunter        type: u16
115*93b230b5SDonald Hunter        byte-order: big-endian
116*93b230b5SDonald Hunter      -
117*93b230b5SDonald Hunter        name: sctp-dst
118*93b230b5SDonald Hunter        type: u16
119*93b230b5SDonald Hunter        byte-order: big-endian
120*93b230b5SDonald Hunter  -
121*93b230b5SDonald Hunter    name: ovs-key-icmp
122*93b230b5SDonald Hunter    type: struct
123*93b230b5SDonald Hunter    members:
124*93b230b5SDonald Hunter      -
125*93b230b5SDonald Hunter        name: icmp-type
126*93b230b5SDonald Hunter        type: u8
127*93b230b5SDonald Hunter      -
128*93b230b5SDonald Hunter        name: icmp-code
129*93b230b5SDonald Hunter        type: u8
130*93b230b5SDonald Hunter  -
131*93b230b5SDonald Hunter    name: ovs-key-ct-tuple-ipv4
132*93b230b5SDonald Hunter    type: struct
133*93b230b5SDonald Hunter    members:
134*93b230b5SDonald Hunter      -
135*93b230b5SDonald Hunter        name: ipv4-src
136*93b230b5SDonald Hunter        type: u32
137*93b230b5SDonald Hunter        byte-order: big-endian
138*93b230b5SDonald Hunter      -
139*93b230b5SDonald Hunter        name: ipv4-dst
140*93b230b5SDonald Hunter        type: u32
141*93b230b5SDonald Hunter        byte-order: big-endian
142*93b230b5SDonald Hunter      -
143*93b230b5SDonald Hunter        name: src-port
144*93b230b5SDonald Hunter        type: u16
145*93b230b5SDonald Hunter        byte-order: big-endian
146*93b230b5SDonald Hunter      -
147*93b230b5SDonald Hunter        name: dst-port
148*93b230b5SDonald Hunter        type: u16
149*93b230b5SDonald Hunter        byte-order: big-endian
150*93b230b5SDonald Hunter      -
151*93b230b5SDonald Hunter        name: ipv4-proto
152*93b230b5SDonald Hunter        type: u8
153*93b230b5SDonald Hunter  -
154*93b230b5SDonald Hunter    name: ovs-action-push-vlan
155*93b230b5SDonald Hunter    type: struct
156*93b230b5SDonald Hunter    members:
157*93b230b5SDonald Hunter      -
158*93b230b5SDonald Hunter        name: vlan_tpid
159*93b230b5SDonald Hunter        type: u16
160*93b230b5SDonald Hunter        byte-order: big-endian
161*93b230b5SDonald Hunter        doc: Tag protocol identifier (TPID) to push.
162*93b230b5SDonald Hunter      -
163*93b230b5SDonald Hunter        name: vlan_tci
164*93b230b5SDonald Hunter        type: u16
165*93b230b5SDonald Hunter        byte-order: big-endian
166*93b230b5SDonald Hunter        doc: Tag control identifier (TCI) to push.
167*93b230b5SDonald Hunter  -
168*93b230b5SDonald Hunter    name: ovs-ufid-flags
169*93b230b5SDonald Hunter    type: flags
170*93b230b5SDonald Hunter    entries:
171*93b230b5SDonald Hunter      - omit-key
172*93b230b5SDonald Hunter      - omit-mask
173*93b230b5SDonald Hunter      - omit-actions
174*93b230b5SDonald Hunter  -
175*93b230b5SDonald Hunter    name: ovs-action-hash
176*93b230b5SDonald Hunter    type: struct
177*93b230b5SDonald Hunter    members:
178*93b230b5SDonald Hunter      -
179*93b230b5SDonald Hunter        name: hash-algorithm
180*93b230b5SDonald Hunter        type: u32
181*93b230b5SDonald Hunter        doc: Algorithm used to compute hash prior to recirculation.
182*93b230b5SDonald Hunter      -
183*93b230b5SDonald Hunter        name: hash-basis
184*93b230b5SDonald Hunter        type: u32
185*93b230b5SDonald Hunter        doc: Basis used for computing hash.
186*93b230b5SDonald Hunter  -
187*93b230b5SDonald Hunter    name: ovs-hash-alg
188*93b230b5SDonald Hunter    type: enum
189*93b230b5SDonald Hunter    doc: |
190*93b230b5SDonald Hunter      Data path hash algorithm for computing Datapath hash. The algorithm type only specifies
191*93b230b5SDonald Hunter      the fields in a flow will be used as part of the hash. Each datapath is free to use its
192*93b230b5SDonald Hunter      own hash algorithm. The hash value will be opaque to the user space daemon.
193*93b230b5SDonald Hunter    entries:
194*93b230b5SDonald Hunter      - ovs-hash-alg-l4
195*93b230b5SDonald Hunter
196*93b230b5SDonald Hunter  -
197*93b230b5SDonald Hunter    name: ovs-action-push-mpls
198*93b230b5SDonald Hunter    type: struct
199*93b230b5SDonald Hunter    members:
200*93b230b5SDonald Hunter      -
201*93b230b5SDonald Hunter        name: lse
202*93b230b5SDonald Hunter        type: u32
203*93b230b5SDonald Hunter        byte-order: big-endian
204*93b230b5SDonald Hunter        doc: |
205*93b230b5SDonald Hunter          MPLS label stack entry to push
206*93b230b5SDonald Hunter      -
207*93b230b5SDonald Hunter        name: ethertype
208*93b230b5SDonald Hunter        type: u32
209*93b230b5SDonald Hunter        byte-order: big-endian
210*93b230b5SDonald Hunter        doc: |
211*93b230b5SDonald Hunter          Ethertype to set in the encapsulating ethernet frame.  The only values
212*93b230b5SDonald Hunter          ethertype should ever be given are ETH_P_MPLS_UC and ETH_P_MPLS_MC,
213*93b230b5SDonald Hunter          indicating MPLS unicast or multicast. Other are rejected.
214*93b230b5SDonald Hunter  -
215*93b230b5SDonald Hunter    name: ovs-action-add-mpls
216*93b230b5SDonald Hunter    type: struct
217*93b230b5SDonald Hunter    members:
218*93b230b5SDonald Hunter      -
219*93b230b5SDonald Hunter        name: lse
220*93b230b5SDonald Hunter        type: u32
221*93b230b5SDonald Hunter        byte-order: big-endian
222*93b230b5SDonald Hunter        doc: |
223*93b230b5SDonald Hunter          MPLS label stack entry to push
224*93b230b5SDonald Hunter      -
225*93b230b5SDonald Hunter        name: ethertype
226*93b230b5SDonald Hunter        type: u32
227*93b230b5SDonald Hunter        byte-order: big-endian
228*93b230b5SDonald Hunter        doc: |
229*93b230b5SDonald Hunter          Ethertype to set in the encapsulating ethernet frame.  The only values
230*93b230b5SDonald Hunter          ethertype should ever be given are ETH_P_MPLS_UC and ETH_P_MPLS_MC,
231*93b230b5SDonald Hunter          indicating MPLS unicast or multicast. Other are rejected.
232*93b230b5SDonald Hunter      -
233*93b230b5SDonald Hunter        name: tun-flags
234*93b230b5SDonald Hunter        type: u16
235*93b230b5SDonald Hunter        doc: |
236*93b230b5SDonald Hunter          MPLS tunnel attributes.
237*93b230b5SDonald Hunter  -
238*93b230b5SDonald Hunter    name: ct-state-flags
239*93b230b5SDonald Hunter    type: flags
240*93b230b5SDonald Hunter    entries:
241*93b230b5SDonald Hunter      -
242*93b230b5SDonald Hunter        name: new
243*93b230b5SDonald Hunter        doc: Beginning of a new connection.
244*93b230b5SDonald Hunter      -
245*93b230b5SDonald Hunter        name: established
246*93b230b5SDonald Hunter        doc: Part of an existing connenction
247*93b230b5SDonald Hunter      -
248*93b230b5SDonald Hunter        name: related
249*93b230b5SDonald Hunter        doc: Related to an existing connection.
250*93b230b5SDonald Hunter      -
251*93b230b5SDonald Hunter        name: reply-dir
252*93b230b5SDonald Hunter        doc: Flow is in the reply direction.
253*93b230b5SDonald Hunter      -
254*93b230b5SDonald Hunter        name: invalid
255*93b230b5SDonald Hunter        doc: Could not track the connection.
256*93b230b5SDonald Hunter      -
257*93b230b5SDonald Hunter        name: tracked
258*93b230b5SDonald Hunter        doc: Conntrack has occurred.
259*93b230b5SDonald Hunter      -
260*93b230b5SDonald Hunter        name: src-nat
261*93b230b5SDonald Hunter        doc: Packet's source address/port was mangled by NAT.
262*93b230b5SDonald Hunter      -
263*93b230b5SDonald Hunter        name: dst-nat
264*93b230b5SDonald Hunter        doc: Packet's destination address/port was mangled by NAT.
265*93b230b5SDonald Hunter
266*93b230b5SDonald Hunterattribute-sets:
267*93b230b5SDonald Hunter  -
268*93b230b5SDonald Hunter    name: flow-attrs
269*93b230b5SDonald Hunter    attributes:
270*93b230b5SDonald Hunter      -
271*93b230b5SDonald Hunter        name: key
272*93b230b5SDonald Hunter        type: nest
273*93b230b5SDonald Hunter        nested-attributes: key-attrs
274*93b230b5SDonald Hunter        doc: |
275*93b230b5SDonald Hunter          Nested attributes specifying the flow key. Always present in
276*93b230b5SDonald Hunter          notifications. Required for all requests (except dumps).
277*93b230b5SDonald Hunter      -
278*93b230b5SDonald Hunter        name: actions
279*93b230b5SDonald Hunter        type: nest
280*93b230b5SDonald Hunter        nested-attributes: action-attrs
281*93b230b5SDonald Hunter        doc: |
282*93b230b5SDonald Hunter          Nested attributes specifying the actions to take for packets that
283*93b230b5SDonald Hunter          match the key. Always present in notifications. Required for
284*93b230b5SDonald Hunter          OVS_FLOW_CMD_NEW requests, optional for OVS_FLOW_CMD_SET requests.  An
285*93b230b5SDonald Hunter          OVS_FLOW_CMD_SET without OVS_FLOW_ATTR_ACTIONS will not modify the
286*93b230b5SDonald Hunter          actions.  To clear the actions, an OVS_FLOW_ATTR_ACTIONS without any
287*93b230b5SDonald Hunter          nested attributes must be given.
288*93b230b5SDonald Hunter      -
289*93b230b5SDonald Hunter        name: stats
290*93b230b5SDonald Hunter        type: binary
291*93b230b5SDonald Hunter        struct: ovs-flow-stats
292*93b230b5SDonald Hunter        doc: |
293*93b230b5SDonald Hunter          Statistics for this flow. Present in notifications if the stats would
294*93b230b5SDonald Hunter          be nonzero. Ignored in requests.
295*93b230b5SDonald Hunter      -
296*93b230b5SDonald Hunter        name: tcp-flags
297*93b230b5SDonald Hunter        type: u8
298*93b230b5SDonald Hunter        doc: |
299*93b230b5SDonald Hunter          An 8-bit value giving the ORed value of all of the TCP flags seen on
300*93b230b5SDonald Hunter          packets in this flow. Only present in notifications for TCP flows, and
301*93b230b5SDonald Hunter          only if it would be nonzero. Ignored in requests.
302*93b230b5SDonald Hunter      -
303*93b230b5SDonald Hunter        name: used
304*93b230b5SDonald Hunter        type: u64
305*93b230b5SDonald Hunter        doc: |
306*93b230b5SDonald Hunter          A 64-bit integer giving the time, in milliseconds on the system
307*93b230b5SDonald Hunter          monotonic clock, at which a packet was last processed for this
308*93b230b5SDonald Hunter          flow. Only present in notifications if a packet has been processed for
309*93b230b5SDonald Hunter          this flow. Ignored in requests.
310*93b230b5SDonald Hunter      -
311*93b230b5SDonald Hunter        name: clear
312*93b230b5SDonald Hunter        type: flag
313*93b230b5SDonald Hunter        doc: |
314*93b230b5SDonald Hunter          If present in a OVS_FLOW_CMD_SET request, clears the last-used time,
315*93b230b5SDonald Hunter          accumulated TCP flags, and statistics for this flow.  Otherwise
316*93b230b5SDonald Hunter          ignored in requests. Never present in notifications.
317*93b230b5SDonald Hunter      -
318*93b230b5SDonald Hunter        name: mask
319*93b230b5SDonald Hunter        type: nest
320*93b230b5SDonald Hunter        nested-attributes: key-attrs
321*93b230b5SDonald Hunter        doc: |
322*93b230b5SDonald Hunter          Nested attributes specifying the mask bits for wildcarded flow
323*93b230b5SDonald Hunter          match. Mask bit value '1' specifies exact match with corresponding
324*93b230b5SDonald Hunter          flow key bit, while mask bit value '0' specifies a wildcarded
325*93b230b5SDonald Hunter          match. Omitting attribute is treated as wildcarding all corresponding
326*93b230b5SDonald Hunter          fields. Optional for all requests. If not present, all flow key bits
327*93b230b5SDonald Hunter          are exact match bits.
328*93b230b5SDonald Hunter      -
329*93b230b5SDonald Hunter        name: probe
330*93b230b5SDonald Hunter        type: binary
331*93b230b5SDonald Hunter        doc: |
332*93b230b5SDonald Hunter          Flow operation is a feature probe, error logging should be suppressed.
333*93b230b5SDonald Hunter      -
334*93b230b5SDonald Hunter        name: ufid
335*93b230b5SDonald Hunter        type: binary
336*93b230b5SDonald Hunter        doc: |
337*93b230b5SDonald Hunter          A value between 1-16 octets specifying a unique identifier for the
338*93b230b5SDonald Hunter          flow. Causes the flow to be indexed by this value rather than the
339*93b230b5SDonald Hunter          value of the OVS_FLOW_ATTR_KEY attribute. Optional for all
340*93b230b5SDonald Hunter          requests. Present in notifications if the flow was created with this
341*93b230b5SDonald Hunter          attribute.
342*93b230b5SDonald Hunter      -
343*93b230b5SDonald Hunter        name: ufid-flags
344*93b230b5SDonald Hunter        type: u32
345*93b230b5SDonald Hunter        enum: ovs-ufid-flags
346*93b230b5SDonald Hunter        doc: |
347*93b230b5SDonald Hunter          A 32-bit value of ORed flags that provide alternative semantics for
348*93b230b5SDonald Hunter          flow installation and retrieval. Optional for all requests.
349*93b230b5SDonald Hunter      -
350*93b230b5SDonald Hunter        name: pad
351*93b230b5SDonald Hunter        type: binary
352*93b230b5SDonald Hunter
353*93b230b5SDonald Hunter  -
354*93b230b5SDonald Hunter    name: key-attrs
355*93b230b5SDonald Hunter    attributes:
356*93b230b5SDonald Hunter      -
357*93b230b5SDonald Hunter        name: encap
358*93b230b5SDonald Hunter        type: nest
359*93b230b5SDonald Hunter        nested-attributes: key-attrs
360*93b230b5SDonald Hunter      -
361*93b230b5SDonald Hunter        name: priority
362*93b230b5SDonald Hunter        type: u32
363*93b230b5SDonald Hunter      -
364*93b230b5SDonald Hunter        name: in-port
365*93b230b5SDonald Hunter        type: u32
366*93b230b5SDonald Hunter      -
367*93b230b5SDonald Hunter        name: ethernet
368*93b230b5SDonald Hunter        type: binary
369*93b230b5SDonald Hunter        doc: struct ovs_key_ethernet
370*93b230b5SDonald Hunter      -
371*93b230b5SDonald Hunter        name: vlan
372*93b230b5SDonald Hunter        type: u16
373*93b230b5SDonald Hunter        byte-order: big-endian
374*93b230b5SDonald Hunter      -
375*93b230b5SDonald Hunter        name: ethertype
376*93b230b5SDonald Hunter        type: u16
377*93b230b5SDonald Hunter        byte-order: big-endian
378*93b230b5SDonald Hunter      -
379*93b230b5SDonald Hunter        name: ipv4
380*93b230b5SDonald Hunter        type: binary
381*93b230b5SDonald Hunter        struct: ovs-key-ipv4
382*93b230b5SDonald Hunter      -
383*93b230b5SDonald Hunter        name: ipv6
384*93b230b5SDonald Hunter        type: binary
385*93b230b5SDonald Hunter        doc: struct ovs_key_ipv6
386*93b230b5SDonald Hunter      -
387*93b230b5SDonald Hunter        name: tcp
388*93b230b5SDonald Hunter        type: binary
389*93b230b5SDonald Hunter        struct: ovs-key-tcp
390*93b230b5SDonald Hunter      -
391*93b230b5SDonald Hunter        name: udp
392*93b230b5SDonald Hunter        type: binary
393*93b230b5SDonald Hunter        struct: ovs-key-udp
394*93b230b5SDonald Hunter      -
395*93b230b5SDonald Hunter        name: icmp
396*93b230b5SDonald Hunter        type: binary
397*93b230b5SDonald Hunter        struct: ovs-key-icmp
398*93b230b5SDonald Hunter      -
399*93b230b5SDonald Hunter        name: icmpv6
400*93b230b5SDonald Hunter        type: binary
401*93b230b5SDonald Hunter        struct: ovs-key-icmp
402*93b230b5SDonald Hunter      -
403*93b230b5SDonald Hunter        name: arp
404*93b230b5SDonald Hunter        type: binary
405*93b230b5SDonald Hunter        doc: struct ovs_key_arp
406*93b230b5SDonald Hunter      -
407*93b230b5SDonald Hunter        name: nd
408*93b230b5SDonald Hunter        type: binary
409*93b230b5SDonald Hunter        doc: struct ovs_key_nd
410*93b230b5SDonald Hunter      -
411*93b230b5SDonald Hunter        name: skb-mark
412*93b230b5SDonald Hunter        type: u32
413*93b230b5SDonald Hunter      -
414*93b230b5SDonald Hunter        name: tunnel
415*93b230b5SDonald Hunter        type: nest
416*93b230b5SDonald Hunter        nested-attributes: tunnel-key-attrs
417*93b230b5SDonald Hunter      -
418*93b230b5SDonald Hunter        name: sctp
419*93b230b5SDonald Hunter        type: binary
420*93b230b5SDonald Hunter        struct: ovs-key-sctp
421*93b230b5SDonald Hunter      -
422*93b230b5SDonald Hunter        name: tcp-flags
423*93b230b5SDonald Hunter        type: u16
424*93b230b5SDonald Hunter        byte-order: big-endian
425*93b230b5SDonald Hunter      -
426*93b230b5SDonald Hunter        name: dp-hash
427*93b230b5SDonald Hunter        type: u32
428*93b230b5SDonald Hunter        doc: Value 0 indicates the hash is not computed by the datapath.
429*93b230b5SDonald Hunter      -
430*93b230b5SDonald Hunter        name: recirc-id
431*93b230b5SDonald Hunter        type: u32
432*93b230b5SDonald Hunter      -
433*93b230b5SDonald Hunter        name: mpls
434*93b230b5SDonald Hunter        type: binary
435*93b230b5SDonald Hunter        struct: ovs-key-mpls
436*93b230b5SDonald Hunter      -
437*93b230b5SDonald Hunter        name: ct-state
438*93b230b5SDonald Hunter        type: u32
439*93b230b5SDonald Hunter        enum: ct-state-flags
440*93b230b5SDonald Hunter        enum-as-flags: true
441*93b230b5SDonald Hunter      -
442*93b230b5SDonald Hunter        name: ct-zone
443*93b230b5SDonald Hunter        type: u16
444*93b230b5SDonald Hunter        doc: connection tracking zone
445*93b230b5SDonald Hunter      -
446*93b230b5SDonald Hunter        name: ct-mark
447*93b230b5SDonald Hunter        type: u32
448*93b230b5SDonald Hunter        doc: connection tracking mark
449*93b230b5SDonald Hunter      -
450*93b230b5SDonald Hunter        name: ct-labels
451*93b230b5SDonald Hunter        type: binary
452*93b230b5SDonald Hunter        doc: 16-octet connection tracking label
453*93b230b5SDonald Hunter      -
454*93b230b5SDonald Hunter        name: ct-orig-tuple-ipv4
455*93b230b5SDonald Hunter        type: binary
456*93b230b5SDonald Hunter        struct: ovs-key-ct-tuple-ipv4
457*93b230b5SDonald Hunter      -
458*93b230b5SDonald Hunter        name: ct-orig-tuple-ipv6
459*93b230b5SDonald Hunter        type: binary
460*93b230b5SDonald Hunter        doc: struct ovs_key_ct_tuple_ipv6
461*93b230b5SDonald Hunter      -
462*93b230b5SDonald Hunter        name: nsh
463*93b230b5SDonald Hunter        type: nest
464*93b230b5SDonald Hunter        nested-attributes: ovs-nsh-key-attrs
465*93b230b5SDonald Hunter      -
466*93b230b5SDonald Hunter        name: packet-type
467*93b230b5SDonald Hunter        type: u32
468*93b230b5SDonald Hunter        byte-order: big-endian
469*93b230b5SDonald Hunter        doc: Should not be sent to the kernel
470*93b230b5SDonald Hunter      -
471*93b230b5SDonald Hunter        name: nd-extensions
472*93b230b5SDonald Hunter        type: binary
473*93b230b5SDonald Hunter        doc: Should not be sent to the kernel
474*93b230b5SDonald Hunter      -
475*93b230b5SDonald Hunter        name: tunnel-info
476*93b230b5SDonald Hunter        type: binary
477*93b230b5SDonald Hunter        doc: struct ip_tunnel_info
478*93b230b5SDonald Hunter      -
479*93b230b5SDonald Hunter        name: ipv6-exthdrs
480*93b230b5SDonald Hunter        type: binary
481*93b230b5SDonald Hunter        doc: struct ovs_key_ipv6_exthdr
482*93b230b5SDonald Hunter  -
483*93b230b5SDonald Hunter    name: action-attrs
484*93b230b5SDonald Hunter    attributes:
485*93b230b5SDonald Hunter      -
486*93b230b5SDonald Hunter        name: output
487*93b230b5SDonald Hunter        type: u32
488*93b230b5SDonald Hunter        doc: ovs port number in datapath
489*93b230b5SDonald Hunter      -
490*93b230b5SDonald Hunter        name: userspace
491*93b230b5SDonald Hunter        type: nest
492*93b230b5SDonald Hunter        nested-attributes: userspace-attrs
493*93b230b5SDonald Hunter      -
494*93b230b5SDonald Hunter        name: set
495*93b230b5SDonald Hunter        type: nest
496*93b230b5SDonald Hunter        nested-attributes: key-attrs
497*93b230b5SDonald Hunter        doc: Replaces the contents of an existing header. The single nested attribute specifies a header to modify and its value.
498*93b230b5SDonald Hunter      -
499*93b230b5SDonald Hunter        name: push-vlan
500*93b230b5SDonald Hunter        type: binary
501*93b230b5SDonald Hunter        struct: ovs-action-push-vlan
502*93b230b5SDonald Hunter        doc: Push a new outermost 802.1Q or 802.1ad header onto the packet.
503*93b230b5SDonald Hunter      -
504*93b230b5SDonald Hunter        name: pop-vlan
505*93b230b5SDonald Hunter        type: flag
506*93b230b5SDonald Hunter        doc: Pop the outermost 802.1Q or 802.1ad header from the packet.
507*93b230b5SDonald Hunter      -
508*93b230b5SDonald Hunter        name: sample
509*93b230b5SDonald Hunter        type: nest
510*93b230b5SDonald Hunter        nested-attributes: sample-attrs
511*93b230b5SDonald Hunter        doc: |
512*93b230b5SDonald Hunter          Probabilistically executes actions, as specified in the nested attributes.
513*93b230b5SDonald Hunter      -
514*93b230b5SDonald Hunter        name: recirc
515*93b230b5SDonald Hunter        type: u32
516*93b230b5SDonald Hunter        doc: recirc id
517*93b230b5SDonald Hunter      -
518*93b230b5SDonald Hunter        name: hash
519*93b230b5SDonald Hunter        type: binary
520*93b230b5SDonald Hunter        struct: ovs-action-hash
521*93b230b5SDonald Hunter      -
522*93b230b5SDonald Hunter        name: push-mpls
523*93b230b5SDonald Hunter        type: binary
524*93b230b5SDonald Hunter        struct: ovs-action-push-mpls
525*93b230b5SDonald Hunter        doc: |
526*93b230b5SDonald Hunter          Push a new MPLS label stack entry onto the top of the packets MPLS
527*93b230b5SDonald Hunter          label stack. Set the ethertype of the encapsulating frame to either
528*93b230b5SDonald Hunter          ETH_P_MPLS_UC or ETH_P_MPLS_MC to indicate the new packet contents.
529*93b230b5SDonald Hunter      -
530*93b230b5SDonald Hunter        name: pop-mpls
531*93b230b5SDonald Hunter        type: u16
532*93b230b5SDonald Hunter        byte-order: big-endian
533*93b230b5SDonald Hunter        doc: ethertype
534*93b230b5SDonald Hunter      -
535*93b230b5SDonald Hunter        name: set-masked
536*93b230b5SDonald Hunter        type: nest
537*93b230b5SDonald Hunter        nested-attributes: key-attrs
538*93b230b5SDonald Hunter        doc: |
539*93b230b5SDonald Hunter          Replaces the contents of an existing header. A nested attribute
540*93b230b5SDonald Hunter          specifies a header to modify, its value, and a mask. For every bit set
541*93b230b5SDonald Hunter          in the mask, the corresponding bit value is copied from the value to
542*93b230b5SDonald Hunter          the packet header field, rest of the bits are left unchanged. The
543*93b230b5SDonald Hunter          non-masked value bits must be passed in as zeroes. Masking is not
544*93b230b5SDonald Hunter          supported for the OVS_KEY_ATTR_TUNNEL attribute.
545*93b230b5SDonald Hunter      -
546*93b230b5SDonald Hunter        name: ct
547*93b230b5SDonald Hunter        type: nest
548*93b230b5SDonald Hunter        nested-attributes: ct-attrs
549*93b230b5SDonald Hunter        doc: |
550*93b230b5SDonald Hunter          Track the connection. Populate the conntrack-related entries
551*93b230b5SDonald Hunter          in the flow key.
552*93b230b5SDonald Hunter      -
553*93b230b5SDonald Hunter        name: trunc
554*93b230b5SDonald Hunter        type: u32
555*93b230b5SDonald Hunter        doc: struct ovs_action_trunc is a u32 max length
556*93b230b5SDonald Hunter      -
557*93b230b5SDonald Hunter        name: push-eth
558*93b230b5SDonald Hunter        type: binary
559*93b230b5SDonald Hunter        doc: struct ovs_action_push_eth
560*93b230b5SDonald Hunter      -
561*93b230b5SDonald Hunter        name: pop-eth
562*93b230b5SDonald Hunter        type: flag
563*93b230b5SDonald Hunter      -
564*93b230b5SDonald Hunter        name: ct-clear
565*93b230b5SDonald Hunter        type: flag
566*93b230b5SDonald Hunter      -
567*93b230b5SDonald Hunter        name: push-nsh
568*93b230b5SDonald Hunter        type: nest
569*93b230b5SDonald Hunter        nested-attributes: ovs-nsh-key-attrs
570*93b230b5SDonald Hunter        doc: |
571*93b230b5SDonald Hunter          Push NSH header to the packet.
572*93b230b5SDonald Hunter      -
573*93b230b5SDonald Hunter        name: pop-nsh
574*93b230b5SDonald Hunter        type: flag
575*93b230b5SDonald Hunter        doc: |
576*93b230b5SDonald Hunter          Pop the outermost NSH header off the packet.
577*93b230b5SDonald Hunter      -
578*93b230b5SDonald Hunter        name: meter
579*93b230b5SDonald Hunter        type: u32
580*93b230b5SDonald Hunter        doc: |
581*93b230b5SDonald Hunter          Run packet through a meter, which may drop the packet, or modify the
582*93b230b5SDonald Hunter          packet (e.g., change the DSCP field)
583*93b230b5SDonald Hunter      -
584*93b230b5SDonald Hunter        name: clone
585*93b230b5SDonald Hunter        type: nest
586*93b230b5SDonald Hunter        nested-attributes: action-attrs
587*93b230b5SDonald Hunter        doc: |
588*93b230b5SDonald Hunter          Make a copy of the packet and execute a list of actions without
589*93b230b5SDonald Hunter          affecting the original packet and key.
590*93b230b5SDonald Hunter      -
591*93b230b5SDonald Hunter        name: check-pkt-len
592*93b230b5SDonald Hunter        type: nest
593*93b230b5SDonald Hunter        nested-attributes: check-pkt-len-attrs
594*93b230b5SDonald Hunter        doc: |
595*93b230b5SDonald Hunter          Check the packet length and execute a set of actions if greater than
596*93b230b5SDonald Hunter          the specified packet length, else execute another set of actions.
597*93b230b5SDonald Hunter      -
598*93b230b5SDonald Hunter        name: add-mpls
599*93b230b5SDonald Hunter        type: binary
600*93b230b5SDonald Hunter        struct: ovs-action-add-mpls
601*93b230b5SDonald Hunter        doc: |
602*93b230b5SDonald Hunter          Push a new MPLS label stack entry at the start of the packet or at the
603*93b230b5SDonald Hunter          start of the l3 header depending on the value of l3 tunnel flag in the
604*93b230b5SDonald Hunter          tun_flags field of this OVS_ACTION_ATTR_ADD_MPLS argument.
605*93b230b5SDonald Hunter      -
606*93b230b5SDonald Hunter        name: dec-ttl
607*93b230b5SDonald Hunter        type: nest
608*93b230b5SDonald Hunter        nested-attributes: dec-ttl-attrs
609*93b230b5SDonald Hunter  -
610*93b230b5SDonald Hunter    name: tunnel-key-attrs
611*93b230b5SDonald Hunter    attributes:
612*93b230b5SDonald Hunter      -
613*93b230b5SDonald Hunter        name: id
614*93b230b5SDonald Hunter        type: u64
615*93b230b5SDonald Hunter        byte-order: big-endian
616*93b230b5SDonald Hunter        value: 0
617*93b230b5SDonald Hunter      -
618*93b230b5SDonald Hunter        name: ipv4-src
619*93b230b5SDonald Hunter        type: u32
620*93b230b5SDonald Hunter        byte-order: big-endian
621*93b230b5SDonald Hunter      -
622*93b230b5SDonald Hunter        name: ipv4-dst
623*93b230b5SDonald Hunter        type: u32
624*93b230b5SDonald Hunter        byte-order: big-endian
625*93b230b5SDonald Hunter      -
626*93b230b5SDonald Hunter        name: tos
627*93b230b5SDonald Hunter        type: u8
628*93b230b5SDonald Hunter      -
629*93b230b5SDonald Hunter        name: ttl
630*93b230b5SDonald Hunter        type: u8
631*93b230b5SDonald Hunter      -
632*93b230b5SDonald Hunter        name: dont-fragment
633*93b230b5SDonald Hunter        type: flag
634*93b230b5SDonald Hunter      -
635*93b230b5SDonald Hunter        name: csum
636*93b230b5SDonald Hunter        type: flag
637*93b230b5SDonald Hunter      -
638*93b230b5SDonald Hunter        name: oam
639*93b230b5SDonald Hunter        type: flag
640*93b230b5SDonald Hunter      -
641*93b230b5SDonald Hunter        name: geneve-opts
642*93b230b5SDonald Hunter        type: binary
643*93b230b5SDonald Hunter        sub-type: u32
644*93b230b5SDonald Hunter      -
645*93b230b5SDonald Hunter        name: tp-src
646*93b230b5SDonald Hunter        type: u16
647*93b230b5SDonald Hunter        byte-order: big-endian
648*93b230b5SDonald Hunter      -
649*93b230b5SDonald Hunter        name: tp-dst
650*93b230b5SDonald Hunter        type: u16
651*93b230b5SDonald Hunter        byte-order: big-endian
652*93b230b5SDonald Hunter      -
653*93b230b5SDonald Hunter        name: vxlan-opts
654*93b230b5SDonald Hunter        type: nest
655*93b230b5SDonald Hunter        nested-attributes: vxlan-ext-attrs
656*93b230b5SDonald Hunter      -
657*93b230b5SDonald Hunter        name: ipv6-src
658*93b230b5SDonald Hunter        type: binary
659*93b230b5SDonald Hunter        doc: |
660*93b230b5SDonald Hunter          struct in6_addr source IPv6 address
661*93b230b5SDonald Hunter      -
662*93b230b5SDonald Hunter        name: ipv6-dst
663*93b230b5SDonald Hunter        type: binary
664*93b230b5SDonald Hunter        doc: |
665*93b230b5SDonald Hunter          struct in6_addr destination IPv6 address
666*93b230b5SDonald Hunter      -
667*93b230b5SDonald Hunter        name: pad
668*93b230b5SDonald Hunter        type: binary
669*93b230b5SDonald Hunter      -
670*93b230b5SDonald Hunter        name: erspan-opts
671*93b230b5SDonald Hunter        type: binary
672*93b230b5SDonald Hunter        doc: |
673*93b230b5SDonald Hunter          struct erspan_metadata
674*93b230b5SDonald Hunter      -
675*93b230b5SDonald Hunter        name: ipv4-info-bridge
676*93b230b5SDonald Hunter        type: flag
677*93b230b5SDonald Hunter  -
678*93b230b5SDonald Hunter    name: check-pkt-len-attrs
679*93b230b5SDonald Hunter    attributes:
680*93b230b5SDonald Hunter      -
681*93b230b5SDonald Hunter        name: pkt-len
682*93b230b5SDonald Hunter        type: u16
683*93b230b5SDonald Hunter      -
684*93b230b5SDonald Hunter        name: actions-if-greater
685*93b230b5SDonald Hunter        type: nest
686*93b230b5SDonald Hunter        nested-attributes: action-attrs
687*93b230b5SDonald Hunter      -
688*93b230b5SDonald Hunter        name: actions-if-less-equal
689*93b230b5SDonald Hunter        type: nest
690*93b230b5SDonald Hunter        nested-attributes: action-attrs
691*93b230b5SDonald Hunter  -
692*93b230b5SDonald Hunter    name: sample-attrs
693*93b230b5SDonald Hunter    attributes:
694*93b230b5SDonald Hunter      -
695*93b230b5SDonald Hunter        name: probability
696*93b230b5SDonald Hunter        type: u32
697*93b230b5SDonald Hunter      -
698*93b230b5SDonald Hunter        name: actions
699*93b230b5SDonald Hunter        type: nest
700*93b230b5SDonald Hunter        nested-attributes: action-attrs
701*93b230b5SDonald Hunter  -
702*93b230b5SDonald Hunter    name: userspace-attrs
703*93b230b5SDonald Hunter    attributes:
704*93b230b5SDonald Hunter      -
705*93b230b5SDonald Hunter        name: pid
706*93b230b5SDonald Hunter        type: u32
707*93b230b5SDonald Hunter      -
708*93b230b5SDonald Hunter        name: userdata
709*93b230b5SDonald Hunter        type: binary
710*93b230b5SDonald Hunter      -
711*93b230b5SDonald Hunter        name: egress-tun-port
712*93b230b5SDonald Hunter        type: u32
713*93b230b5SDonald Hunter      -
714*93b230b5SDonald Hunter        name: actions
715*93b230b5SDonald Hunter        type: flag
716*93b230b5SDonald Hunter  -
717*93b230b5SDonald Hunter    name: ovs-nsh-key-attrs
718*93b230b5SDonald Hunter    attributes:
719*93b230b5SDonald Hunter      -
720*93b230b5SDonald Hunter        name: base
721*93b230b5SDonald Hunter        type: binary
722*93b230b5SDonald Hunter      -
723*93b230b5SDonald Hunter        name: md1
724*93b230b5SDonald Hunter        type: binary
725*93b230b5SDonald Hunter      -
726*93b230b5SDonald Hunter        name: md2
727*93b230b5SDonald Hunter        type: binary
728*93b230b5SDonald Hunter  -
729*93b230b5SDonald Hunter    name: ct-attrs
730*93b230b5SDonald Hunter    attributes:
731*93b230b5SDonald Hunter      -
732*93b230b5SDonald Hunter        name: commit
733*93b230b5SDonald Hunter        type: flag
734*93b230b5SDonald Hunter      -
735*93b230b5SDonald Hunter        name: zone
736*93b230b5SDonald Hunter        type: u16
737*93b230b5SDonald Hunter      -
738*93b230b5SDonald Hunter        name: mark
739*93b230b5SDonald Hunter        type: binary
740*93b230b5SDonald Hunter      -
741*93b230b5SDonald Hunter        name: labels
742*93b230b5SDonald Hunter        type: binary
743*93b230b5SDonald Hunter      -
744*93b230b5SDonald Hunter        name: helper
745*93b230b5SDonald Hunter        type: string
746*93b230b5SDonald Hunter      -
747*93b230b5SDonald Hunter        name: nat
748*93b230b5SDonald Hunter        type: nest
749*93b230b5SDonald Hunter        nested-attributes: nat-attrs
750*93b230b5SDonald Hunter      -
751*93b230b5SDonald Hunter        name: force-commit
752*93b230b5SDonald Hunter        type: flag
753*93b230b5SDonald Hunter      -
754*93b230b5SDonald Hunter        name: eventmask
755*93b230b5SDonald Hunter        type: u32
756*93b230b5SDonald Hunter      -
757*93b230b5SDonald Hunter        name: timeout
758*93b230b5SDonald Hunter        type: string
759*93b230b5SDonald Hunter  -
760*93b230b5SDonald Hunter    name: nat-attrs
761*93b230b5SDonald Hunter    attributes:
762*93b230b5SDonald Hunter      -
763*93b230b5SDonald Hunter        name: src
764*93b230b5SDonald Hunter        type: binary
765*93b230b5SDonald Hunter      -
766*93b230b5SDonald Hunter        name: dst
767*93b230b5SDonald Hunter        type: binary
768*93b230b5SDonald Hunter      -
769*93b230b5SDonald Hunter        name: ip-min
770*93b230b5SDonald Hunter        type: binary
771*93b230b5SDonald Hunter      -
772*93b230b5SDonald Hunter        name: ip-max
773*93b230b5SDonald Hunter        type: binary
774*93b230b5SDonald Hunter      -
775*93b230b5SDonald Hunter        name: proto-min
776*93b230b5SDonald Hunter        type: binary
777*93b230b5SDonald Hunter      -
778*93b230b5SDonald Hunter        name: proto-max
779*93b230b5SDonald Hunter        type: binary
780*93b230b5SDonald Hunter      -
781*93b230b5SDonald Hunter        name: persistent
782*93b230b5SDonald Hunter        type: binary
783*93b230b5SDonald Hunter      -
784*93b230b5SDonald Hunter        name: proto-hash
785*93b230b5SDonald Hunter        type: binary
786*93b230b5SDonald Hunter      -
787*93b230b5SDonald Hunter        name: proto-random
788*93b230b5SDonald Hunter        type: binary
789*93b230b5SDonald Hunter  -
790*93b230b5SDonald Hunter    name: dec-ttl-attrs
791*93b230b5SDonald Hunter    attributes:
792*93b230b5SDonald Hunter      -
793*93b230b5SDonald Hunter        name: action
794*93b230b5SDonald Hunter        type: nest
795*93b230b5SDonald Hunter        nested-attributes: action-attrs
796*93b230b5SDonald Hunter  -
797*93b230b5SDonald Hunter    name: vxlan-ext-attrs
798*93b230b5SDonald Hunter    attributes:
799*93b230b5SDonald Hunter      -
800*93b230b5SDonald Hunter        name: gbp
801*93b230b5SDonald Hunter        type: u32
802*93b230b5SDonald Hunter
803*93b230b5SDonald Hunteroperations:
804*93b230b5SDonald Hunter  fixed-header: ovs-header
805*93b230b5SDonald Hunter  list:
806*93b230b5SDonald Hunter    -
807*93b230b5SDonald Hunter      name: flow-get
808*93b230b5SDonald Hunter      doc: Get / dump OVS flow configuration and state
809*93b230b5SDonald Hunter      value: 3
810*93b230b5SDonald Hunter      attribute-set: flow-attrs
811*93b230b5SDonald Hunter      do: &flow-get-op
812*93b230b5SDonald Hunter        request:
813*93b230b5SDonald Hunter          attributes:
814*93b230b5SDonald Hunter            - dp-ifindex
815*93b230b5SDonald Hunter            - key
816*93b230b5SDonald Hunter            - ufid
817*93b230b5SDonald Hunter            - ufid-flags
818*93b230b5SDonald Hunter        reply:
819*93b230b5SDonald Hunter          attributes:
820*93b230b5SDonald Hunter            - dp-ifindex
821*93b230b5SDonald Hunter            - key
822*93b230b5SDonald Hunter            - ufid
823*93b230b5SDonald Hunter            - mask
824*93b230b5SDonald Hunter            - stats
825*93b230b5SDonald Hunter            - actions
826*93b230b5SDonald Hunter      dump: *flow-get-op
827*93b230b5SDonald Hunter
828*93b230b5SDonald Huntermcast-groups:
829*93b230b5SDonald Hunter  list:
830*93b230b5SDonald Hunter    -
831*93b230b5SDonald Hunter      name: ovs_flow
832