summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/DpInternal.h
diff options
context:
space:
mode:
authorSorin Vinturis <svinturis@cloudbasesolutions.com>2016-02-02 10:41:27 +0000
committerGurucharan Shetty <guru@ovn.org>2016-02-02 08:23:47 -0800
commit5874d571188500ec7aa6d98c778347c6774c3a24 (patch)
tree11e86cc1ee6e6c36bfcce1e1f2e541d659f8a605 /datapath-windows/ovsext/DpInternal.h
parentfa47c1145c5c69933466539f63efa91900b8c5b2 (diff)
downloadopenvswitch-5874d571188500ec7aa6d98c778347c6774c3a24.tar.gz
datapath-windows: Support for OVS_KEY_ATTR_MPLS attribute
This patch adds OVS_KEY_ATTR_MPLS to the OVS flow mechanism. Tested using ping. Tested using iperf (TCP and UDP). Tested using DriverVerifier. Signed-off-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> Acked-by: Nithin Raju <nithin@vmware.com> Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/DpInternal.h')
-rw-r--r--datapath-windows/ovsext/DpInternal.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/datapath-windows/ovsext/DpInternal.h b/datapath-windows/ovsext/DpInternal.h
index 466a33a48..72e9b208a 100644
--- a/datapath-windows/ovsext/DpInternal.h
+++ b/datapath-windows/ovsext/DpInternal.h
@@ -20,6 +20,7 @@
#include <netioapi.h>
#define IFNAMSIZ IF_NAMESIZE
#include "../ovsext/Netlink/Netlink.h"
+#include "Mpls.h"
#define OVS_DP_NUMBER ((uint32_t) 0)
@@ -125,7 +126,7 @@ typedef struct L2Key {
uint8_t dlDst[6]; /* Ethernet destination address. */
ovs_be16 vlanTci; /* If 802.1Q, TCI | VLAN_CFI; otherwise 0. */
ovs_be16 dlType; /* Ethernet frame type. */
-} L2Key; /* Size of 24 byte. */
+} L2Key; /* Size of 24 byte. */
/* Number of packet attributes required to store OVS tunnel key. */
#define NUM_PKT_ATTR_REQUIRED 3
@@ -147,16 +148,23 @@ typedef union OvsIPv4TunnelKey {
};
};
uint64_t attr[NUM_PKT_ATTR_REQUIRED];
-} OvsIPv4TunnelKey;
+} OvsIPv4TunnelKey; /* Size of 24 byte. */
+
+typedef struct MplsKey {
+ ovs_be32 lse; /* MPLS topmost label stack entry. */
+ uint8 pad[4];
+} MplsKey; /* Size of 8 bytes. */
typedef __declspec(align(8)) struct OvsFlowKey {
OvsIPv4TunnelKey tunKey; /* 24 bytes */
L2Key l2; /* 24 bytes */
union {
+ /* These headers are mutually exclusive. */
IpKey ipKey; /* size 16 */
ArpKey arpKey; /* size 24 */
Ipv6Key ipv6Key; /* size 48 */
Icmp6Key icmp6Key; /* size 72 */
+ MplsKey mplsKey; /* size 8 */
};
} OvsFlowKey;