[ovs-dev] [PATCH] datapath-windows: Fix various Geneve bugs
Yin Lin
linyi at vmware.com
Thu Jul 14 03:21:19 UTC 2016
Signed-off-by: Yin Lin <linyi at vmware.com>
---
datapath-windows/ovsext/Flow.c | 2 +-
datapath-windows/ovsext/Vport.c | 3 ++-
datapath-windows/ovsext/Vport.h | 5 +++++
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c
index bc0bb37..7a57f96 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 1462453..22741db 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 f0a9acd..1f4968e 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");
}
--
2.8.0.windows.1
More information about the dev
mailing list