summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext
diff options
context:
space:
mode:
authorYin Lin <linyi@vmware.com>2016-07-13 20:21:19 -0700
committerGurucharan Shetty <guru@ovn.org>2016-07-21 11:26:54 -0700
commit9e23ac209520d1ca1ac30746ec1d63bc2c37e471 (patch)
tree348af1da192034d0c4feda905612384f94b3eef0 /datapath-windows/ovsext
parentff188ad1db6ac9dba746093a1c464f17b542a880 (diff)
downloadopenvswitch-9e23ac209520d1ca1ac30746ec1d63bc2c37e471.tar.gz
datapath-windows: Fix various Geneve bugs
Signed-off-by: Yin Lin <linyi@vmware.com> Acked-by: Nithin Raju <nithin@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext')
-rw-r--r--datapath-windows/ovsext/Flow.c2
-rw-r--r--datapath-windows/ovsext/Vport.c3
-rw-r--r--datapath-windows/ovsext/Vport.h5
3 files changed, 8 insertions, 2 deletions
diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c
index bc0bb37fb..7a57f96ba 100644
--- a/datapath-windows/ovsext/Flow.c
+++ b/datapath-windows/ovsext/Flow.c
@@ -1683,7 +1683,7 @@ OvsTunnelAttrToGeneveOptions(PNL_ATTR attr,
option = (GeneveOptionHdr *)((UINT8 *)option + len);
optLen -= len;
}
- memcpy(TunnelKeyGetOptions(tunKey), option, optLen);
+ memcpy(TunnelKeyGetOptions(tunKey), NlAttrData(attr), tunKey->tunOptLen);
if (isCritical) {
tunKey->flags |= OVS_TNL_F_CRT_OPT;
}
diff --git a/datapath-windows/ovsext/Vport.c b/datapath-windows/ovsext/Vport.c
index 146245345..22741db0a 100644
--- a/datapath-windows/ovsext/Vport.c
+++ b/datapath-windows/ovsext/Vport.c
@@ -724,7 +724,8 @@ OvsFindTunnelVportByDstPortAndNWProto(POVS_SWITCH_CONTEXT switchContext,
if (GetPortFromPriv(vport) == dstPort) {
switch (nwProto) {
case IPPROTO_UDP:
- if (vport->ovsType != OVS_VPORT_TYPE_VXLAN) {
+ if (vport->ovsType != OVS_VPORT_TYPE_GENEVE &&
+ vport->ovsType != OVS_VPORT_TYPE_VXLAN) {
continue;
}
break;
diff --git a/datapath-windows/ovsext/Vport.h b/datapath-windows/ovsext/Vport.h
index f0a9acd9e..1f4968ee7 100644
--- a/datapath-windows/ovsext/Vport.h
+++ b/datapath-windows/ovsext/Vport.h
@@ -21,6 +21,7 @@
#include "Stt.h"
#include "Switch.h"
#include "VxLan.h"
+#include "Geneve.h"
#define OVS_MAX_DPPORTS MAXUINT16
#define OVS_DPPORT_NUMBER_INVALID OVS_MAX_DPPORTS
@@ -183,6 +184,7 @@ static __inline BOOLEAN
OvsIsTunnelVportType(OVS_VPORT_TYPE ovsType)
{
return ovsType == OVS_VPORT_TYPE_VXLAN ||
+ ovsType == OVS_VPORT_TYPE_GENEVE ||
ovsType == OVS_VPORT_TYPE_STT ||
ovsType == OVS_VPORT_TYPE_GRE;
}
@@ -270,6 +272,9 @@ GetPortFromPriv(POVS_VPORT_ENTRY vport)
case OVS_VPORT_TYPE_VXLAN:
dstPort = ((POVS_VXLAN_VPORT)vportPriv)->dstPort;
break;
+ case OVS_VPORT_TYPE_GENEVE:
+ dstPort = ((POVS_GENEVE_VPORT) vportPriv)->dstPort;
+ break;
default:
ASSERT(! "Port is not a tunnel port");
}