Signed-off-by: Yin Lin <li...@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

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to