From patchwork Thu Jul 14 03:21:19 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yin Lin X-Patchwork-Id: 648152 X-Patchwork-Delegate: guru@ovn.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id 3rqgxW4GgCz9s9N for ; Thu, 14 Jul 2016 13:22:39 +1000 (AEST) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id A43DA10B37; Wed, 13 Jul 2016 20:22:38 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx3v3.cudamail.com (mx3.cudamail.com [64.34.241.5]) by archives.nicira.com (Postfix) with ESMTPS id 848FB10B0E for ; Wed, 13 Jul 2016 20:22:36 -0700 (PDT) Received: from bar6.cudamail.com (localhost [127.0.0.1]) by mx3v3.cudamail.com (Postfix) with ESMTPS id 10AD91628E4 for ; Wed, 13 Jul 2016 21:22:36 -0600 (MDT) X-ASG-Debug-ID: 1468466555-0b3237760a00710001-byXFYA Received: from mx1-pf2.cudamail.com ([192.168.24.2]) by bar6.cudamail.com with ESMTP id kWKcUOKCssnkH9IJ (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 13 Jul 2016 21:22:35 -0600 (MDT) X-Barracuda-Envelope-From: linyi@vmware.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.2 Received: from unknown (HELO smtp-outbound-1.vmware.com) (208.91.2.12) by mx1-pf2.cudamail.com with ESMTPS (DHE-RSA-AES256-SHA encrypted); 14 Jul 2016 03:22:34 -0000 Received-SPF: error (mx1-pf2.cudamail.com: error in processing during lookup of vmware.com: DNS problem) X-Barracuda-Apparent-Source-IP: 208.91.2.12 X-Barracuda-RBL-IP: 208.91.2.12 Received: from sc9-mailhost1.vmware.com (sc9-mailhost1.vmware.com [10.113.161.71]) by smtp-outbound-1.vmware.com (Postfix) with ESMTP id 0036998538 for ; Wed, 13 Jul 2016 20:22:34 -0700 (PDT) Received: from linyi-win10.vmware.com (htb-1n-eng-dhcp279.eng.vmware.com [10.33.75.23]) by sc9-mailhost1.vmware.com (Postfix) with ESMTP id 04C6618658; Wed, 13 Jul 2016 20:22:34 -0700 (PDT) X-CudaMail-Envelope-Sender: linyi@vmware.com From: Yin Lin To: dev@openvswitch.org X-CudaMail-Whitelist-To: dev@openvswitch.org X-CudaMail-MID: CM-E2-712087484 X-CudaMail-DTE: 071316 X-CudaMail-Originating-IP: 208.91.2.12 Date: Wed, 13 Jul 2016 20:21:19 -0700 X-ASG-Orig-Subj: [##CM-E2-712087484##][PATCH] datapath-windows: Fix various Geneve bugs Message-Id: <1468466479-23000-1-git-send-email-linyi@vmware.com> X-Mailer: git-send-email 2.8.0.windows.1 X-Barracuda-Connect: UNKNOWN[192.168.24.2] X-Barracuda-Start-Time: 1468466555 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-ASG-Whitelist: Header =?UTF-8?B?eFwtY3VkYW1haWxcLXdoaXRlbGlzdFwtdG8=?= X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 X-ASG-Whitelist: EmailCat (corporate) Cc: Yin Lin Subject: [ovs-dev] [PATCH] datapath-windows: Fix various Geneve bugs X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" Signed-off-by: Yin Lin Acked-by: Nithin Raju Acked-by: Alin Gabriel Serdean aserdean@cloudbasesolutions.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"); }