1 # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
5 protocol: genetlink-legacy
6 uapi-header: linux/openvswitch.h
9 OVS flow configuration over generic netlink.
16 Header for OVS Generic Netlink messages.
22 ifindex of local port for datapath (0 to make a request not specific
31 doc: Number of matched packets.
35 doc: Number of matched bytes.
37 name: ovs-key-ethernet
57 byte-order: big-endian
65 byte-order: big-endian
70 byte-order: big-endian
93 byte-order: big-endian
99 byte-order: big-endian
104 byte-order: big-endian
118 name: ovs-key-ipv6-exthdrs
126 name-prefix: ovs-frag-type-
127 enum-name: ovs-frag-type
132 doc: Packet is not a fragment.
135 doc: Packet is a fragment with offset 0.
138 doc: Packet is a fragment with nonzero offset.
149 byte-order: big-endian
153 byte-order: big-endian
161 byte-order: big-endian
165 byte-order: big-endian
173 byte-order: big-endian
177 byte-order: big-endian
195 byte-order: big-endian
199 byte-order: big-endian
203 byte-order: big-endian
222 byte-order: big-endian
234 name: ovs-key-ct-tuple-ipv4
240 byte-order: big-endian
244 byte-order: big-endian
248 byte-order: big-endian
252 byte-order: big-endian
257 name: ovs-action-push-vlan
263 byte-order: big-endian
264 doc: Tag protocol identifier (TPID) to push.
268 byte-order: big-endian
269 doc: Tag control identifier (TCI) to push.
272 name-prefix: ovs-ufid-f-
280 name: ovs-action-hash
286 doc: Algorithm used to compute hash prior to recirculation.
290 doc: Basis used for computing hash.
293 enum-name: ovs-hash-alg
296 Data path hash algorithm for computing Datapath hash. The algorithm type only specifies
297 the fields in a flow will be used as part of the hash. Each datapath is free to use its
298 own hash algorithm. The hash value will be opaque to the user space daemon.
303 name: ovs-action-push-mpls
309 byte-order: big-endian
311 MPLS label stack entry to push
315 byte-order: big-endian
317 Ethertype to set in the encapsulating ethernet frame. The only values
318 ethertype should ever be given are ETH_P_MPLS_UC and ETH_P_MPLS_MC,
319 indicating MPLS unicast or multicast. Other are rejected.
321 name: ovs-action-add-mpls
327 byte-order: big-endian
329 MPLS label stack entry to push
333 byte-order: big-endian
335 Ethertype to set in the encapsulating ethernet frame. The only values
336 ethertype should ever be given are ETH_P_MPLS_UC and ETH_P_MPLS_MC,
337 indicating MPLS unicast or multicast. Other are rejected.
342 MPLS tunnel attributes.
347 name-prefix: ovs-cs-f-
351 doc: Beginning of a new connection.
354 doc: Part of an existing connenction
357 doc: Related to an existing connection.
360 doc: Flow is in the reply direction.
363 doc: Could not track the connection.
366 doc: Conntrack has occurred.
369 doc: Packet's source address/port was mangled by NAT.
372 doc: Packet's destination address/port was mangled by NAT.
377 enum-name: ovs-flow-attr
378 name-prefix: ovs-flow-attr-
383 nested-attributes: key-attrs
385 Nested attributes specifying the flow key. Always present in
386 notifications. Required for all requests (except dumps).
390 nested-attributes: action-attrs
392 Nested attributes specifying the actions to take for packets that
393 match the key. Always present in notifications. Required for
394 OVS_FLOW_CMD_NEW requests, optional for OVS_FLOW_CMD_SET requests. An
395 OVS_FLOW_CMD_SET without OVS_FLOW_ATTR_ACTIONS will not modify the
396 actions. To clear the actions, an OVS_FLOW_ATTR_ACTIONS without any
397 nested attributes must be given.
401 struct: ovs-flow-stats
403 Statistics for this flow. Present in notifications if the stats would
404 be nonzero. Ignored in requests.
409 An 8-bit value giving the ORed value of all of the TCP flags seen on
410 packets in this flow. Only present in notifications for TCP flows, and
411 only if it would be nonzero. Ignored in requests.
416 A 64-bit integer giving the time, in milliseconds on the system
417 monotonic clock, at which a packet was last processed for this
418 flow. Only present in notifications if a packet has been processed for
419 this flow. Ignored in requests.
424 If present in a OVS_FLOW_CMD_SET request, clears the last-used time,
425 accumulated TCP flags, and statistics for this flow. Otherwise
426 ignored in requests. Never present in notifications.
430 nested-attributes: key-attrs
432 Nested attributes specifying the mask bits for wildcarded flow
433 match. Mask bit value '1' specifies exact match with corresponding
434 flow key bit, while mask bit value '0' specifies a wildcarded
435 match. Omitting attribute is treated as wildcarding all corresponding
436 fields. Optional for all requests. If not present, all flow key bits
437 are exact match bits.
442 Flow operation is a feature probe, error logging should be suppressed.
447 A value between 1-16 octets specifying a unique identifier for the
448 flow. Causes the flow to be indexed by this value rather than the
449 value of the OVS_FLOW_ATTR_KEY attribute. Optional for all
450 requests. Present in notifications if the flow was created with this
458 A 32-bit value of ORed flags that provide alternative semantics for
459 flow installation and retrieval. Optional for all requests.
466 enum-name: ovs-key-attr
467 name-prefix: ovs-key-attr-
472 nested-attributes: key-attrs
482 struct: ovs-key-ethernet
483 doc: struct ovs_key_ethernet
487 byte-order: big-endian
491 byte-order: big-endian
500 doc: struct ovs_key_ipv6
521 doc: struct ovs_key_arp
526 doc: struct ovs_key_nd
533 nested-attributes: tunnel-key-attrs
541 byte-order: big-endian
545 doc: Value 0 indicates the hash is not computed by the datapath.
561 doc: connection tracking zone
565 doc: connection tracking mark
570 doc: 16-octet connection tracking label
572 name: ct-orig-tuple-ipv4
574 struct: ovs-key-ct-tuple-ipv4
576 name: ct-orig-tuple-ipv6
578 doc: struct ovs_key_ct_tuple_ipv6
582 nested-attributes: ovs-nsh-key-attrs
586 byte-order: big-endian
587 doc: Should not be sent to the kernel
591 doc: Should not be sent to the kernel
595 doc: struct ip_tunnel_info
599 struct: ovs-key-ipv6-exthdrs
600 doc: struct ovs_key_ipv6_exthdr
603 enum-name: ovs-action-attr
604 name-prefix: ovs-action-attr-
609 doc: ovs port number in datapath
613 nested-attributes: userspace-attrs
617 nested-attributes: key-attrs
618 doc: Replaces the contents of an existing header. The single nested attribute specifies a header to modify and its value.
622 struct: ovs-action-push-vlan
623 doc: Push a new outermost 802.1Q or 802.1ad header onto the packet.
627 doc: Pop the outermost 802.1Q or 802.1ad header from the packet.
631 nested-attributes: sample-attrs
633 Probabilistically executes actions, as specified in the nested attributes.
641 struct: ovs-action-hash
645 struct: ovs-action-push-mpls
647 Push a new MPLS label stack entry onto the top of the packets MPLS
648 label stack. Set the ethertype of the encapsulating frame to either
649 ETH_P_MPLS_UC or ETH_P_MPLS_MC to indicate the new packet contents.
653 byte-order: big-endian
658 nested-attributes: key-attrs
660 Replaces the contents of an existing header. A nested attribute
661 specifies a header to modify, its value, and a mask. For every bit set
662 in the mask, the corresponding bit value is copied from the value to
663 the packet header field, rest of the bits are left unchanged. The
664 non-masked value bits must be passed in as zeroes. Masking is not
665 supported for the OVS_KEY_ATTR_TUNNEL attribute.
669 nested-attributes: ct-attrs
671 Track the connection. Populate the conntrack-related entries
676 doc: struct ovs_action_trunc is a u32 max length
680 doc: struct ovs_action_push_eth
690 nested-attributes: ovs-nsh-key-attrs
692 Push NSH header to the packet.
697 Pop the outermost NSH header off the packet.
702 Run packet through a meter, which may drop the packet, or modify the
703 packet (e.g., change the DSCP field)
707 nested-attributes: action-attrs
709 Make a copy of the packet and execute a list of actions without
710 affecting the original packet and key.
714 nested-attributes: check-pkt-len-attrs
716 Check the packet length and execute a set of actions if greater than
717 the specified packet length, else execute another set of actions.
721 struct: ovs-action-add-mpls
723 Push a new MPLS label stack entry at the start of the packet or at the
724 start of the l3 header depending on the value of l3 tunnel flag in the
725 tun_flags field of this OVS_ACTION_ATTR_ADD_MPLS argument.
729 nested-attributes: dec-ttl-attrs
731 name: tunnel-key-attrs
732 enum-name: ovs-tunnel-key-attr
733 name-prefix: ovs-tunnel-key-attr-
738 byte-order: big-endian
743 byte-order: big-endian
747 byte-order: big-endian
770 byte-order: big-endian
774 byte-order: big-endian
778 nested-attributes: vxlan-ext-attrs
783 struct in6_addr source IPv6 address
788 struct in6_addr destination IPv6 address
796 struct erspan_metadata
798 name: ipv4-info-bridge
801 name: check-pkt-len-attrs
802 enum-name: ovs-check-pkt-len-attr
803 name-prefix: ovs-check-pkt-len-attr-
809 name: actions-if-greater
811 nested-attributes: action-attrs
813 name: actions-if-less-equal
815 nested-attributes: action-attrs
818 enum-name: ovs-sample-attr
819 name-prefix: ovs-sample-attr-
827 nested-attributes: action-attrs
829 name: userspace-attrs
830 enum-name: ovs-userspace-attr
831 name-prefix: ovs-userspace-attr-
840 name: egress-tun-port
846 name: ovs-nsh-key-attrs
847 enum-name: ovs-nsh-key-attr
848 name-prefix: ovs-nsh-key-attr-
861 enum-name: ovs-ct-attr
862 name-prefix: ovs-ct-attr-
882 nested-attributes: nat-attrs
894 enum-name: ovs-nat-attr
895 name-prefix: ovs-nat-attr-
926 enum-name: ovs-dec-ttl-attr
927 name-prefix: ovs-dec-ttl-attr-
932 nested-attributes: action-attrs
934 name: vxlan-ext-attrs
935 enum-name: ovs-vxlan-ext-
936 name-prefix: ovs-vxlan-ext-
943 name-prefix: ovs-flow-cmd-
944 fixed-header: ovs-header
948 doc: Get / dump OVS flow configuration and state
950 attribute-set: flow-attrs
967 doc: Create OVS flow configuration in a data path
969 attribute-set: flow-attrs