aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux/openvswitch.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/uapi/linux/openvswitch.h')
-rw-r--r--include/uapi/linux/openvswitch.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index a27222d5b413..616d04761730 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -454,6 +454,14 @@ struct ovs_key_ct_labels {
454#define OVS_CS_F_REPLY_DIR 0x08 /* Flow is in the reply direction. */ 454#define OVS_CS_F_REPLY_DIR 0x08 /* Flow is in the reply direction. */
455#define OVS_CS_F_INVALID 0x10 /* Could not track connection. */ 455#define OVS_CS_F_INVALID 0x10 /* Could not track connection. */
456#define OVS_CS_F_TRACKED 0x20 /* Conntrack has occurred. */ 456#define OVS_CS_F_TRACKED 0x20 /* Conntrack has occurred. */
457#define OVS_CS_F_SRC_NAT 0x40 /* Packet's source address/port was
458 * mangled by NAT.
459 */
460#define OVS_CS_F_DST_NAT 0x80 /* Packet's destination address/port
461 * was mangled by NAT.
462 */
463
464#define OVS_CS_F_NAT_MASK (OVS_CS_F_SRC_NAT | OVS_CS_F_DST_NAT)
457 465
458/** 466/**
459 * enum ovs_flow_attr - attributes for %OVS_FLOW_* commands. 467 * enum ovs_flow_attr - attributes for %OVS_FLOW_* commands.
@@ -632,6 +640,8 @@ struct ovs_action_hash {
632 * mask. For each bit set in the mask, the corresponding bit in the value is 640 * mask. For each bit set in the mask, the corresponding bit in the value is
633 * copied to the connection tracking label field in the connection. 641 * copied to the connection tracking label field in the connection.
634 * @OVS_CT_ATTR_HELPER: variable length string defining conntrack ALG. 642 * @OVS_CT_ATTR_HELPER: variable length string defining conntrack ALG.
643 * @OVS_CT_ATTR_NAT: Nested OVS_NAT_ATTR_* for performing L3 network address
644 * translation (NAT) on the packet.
635 */ 645 */
636enum ovs_ct_attr { 646enum ovs_ct_attr {
637 OVS_CT_ATTR_UNSPEC, 647 OVS_CT_ATTR_UNSPEC,
@@ -641,12 +651,51 @@ enum ovs_ct_attr {
641 OVS_CT_ATTR_LABELS, /* labels to associate with this connection. */ 651 OVS_CT_ATTR_LABELS, /* labels to associate with this connection. */
642 OVS_CT_ATTR_HELPER, /* netlink helper to assist detection of 652 OVS_CT_ATTR_HELPER, /* netlink helper to assist detection of
643 related connections. */ 653 related connections. */
654 OVS_CT_ATTR_NAT, /* Nested OVS_NAT_ATTR_* */
644 __OVS_CT_ATTR_MAX 655 __OVS_CT_ATTR_MAX
645}; 656};
646 657
647#define OVS_CT_ATTR_MAX (__OVS_CT_ATTR_MAX - 1) 658#define OVS_CT_ATTR_MAX (__OVS_CT_ATTR_MAX - 1)
648 659
649/** 660/**
661 * enum ovs_nat_attr - Attributes for %OVS_CT_ATTR_NAT.
662 *
663 * @OVS_NAT_ATTR_SRC: Flag for Source NAT (mangle source address/port).
664 * @OVS_NAT_ATTR_DST: Flag for Destination NAT (mangle destination
665 * address/port). Only one of (@OVS_NAT_ATTR_SRC, @OVS_NAT_ATTR_DST) may be
666 * specified. Effective only for packets for ct_state NEW connections.
667 * Packets of committed connections are mangled by the NAT action according to
668 * the committed NAT type regardless of the flags specified. As a corollary, a
669 * NAT action without a NAT type flag will only mangle packets of committed
670 * connections. The following NAT attributes only apply for NEW
671 * (non-committed) connections, and they may be included only when the CT
672 * action has the @OVS_CT_ATTR_COMMIT flag and either @OVS_NAT_ATTR_SRC or
673 * @OVS_NAT_ATTR_DST is also included.
674 * @OVS_NAT_ATTR_IP_MIN: struct in_addr or struct in6_addr
675 * @OVS_NAT_ATTR_IP_MAX: struct in_addr or struct in6_addr
676 * @OVS_NAT_ATTR_PROTO_MIN: u16 L4 protocol specific lower boundary (port)
677 * @OVS_NAT_ATTR_PROTO_MAX: u16 L4 protocol specific upper boundary (port)
678 * @OVS_NAT_ATTR_PERSISTENT: Flag for persistent IP mapping across reboots
679 * @OVS_NAT_ATTR_PROTO_HASH: Flag for pseudo random L4 port mapping (MD5)
680 * @OVS_NAT_ATTR_PROTO_RANDOM: Flag for fully randomized L4 port mapping
681 */
682enum ovs_nat_attr {
683 OVS_NAT_ATTR_UNSPEC,
684 OVS_NAT_ATTR_SRC,
685 OVS_NAT_ATTR_DST,
686 OVS_NAT_ATTR_IP_MIN,
687 OVS_NAT_ATTR_IP_MAX,
688 OVS_NAT_ATTR_PROTO_MIN,
689 OVS_NAT_ATTR_PROTO_MAX,
690 OVS_NAT_ATTR_PERSISTENT,
691 OVS_NAT_ATTR_PROTO_HASH,
692 OVS_NAT_ATTR_PROTO_RANDOM,
693 __OVS_NAT_ATTR_MAX,
694};
695
696#define OVS_NAT_ATTR_MAX (__OVS_NAT_ATTR_MAX - 1)
697
698/**
650 * enum ovs_action_attr - Action types. 699 * enum ovs_action_attr - Action types.
651 * 700 *
652 * @OVS_ACTION_ATTR_OUTPUT: Output packet to port. 701 * @OVS_ACTION_ATTR_OUTPUT: Output packet to port.