summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Vport.c
diff options
context:
space:
mode:
authorYin Lin <linyi@vmware.com>2016-06-24 14:44:30 -0700
committerGurucharan Shetty <guru@ovn.org>2016-06-24 14:47:15 -0700
commit47c3123da2d0140299e4f1d9fe4a2922a072ec1b (patch)
tree2eabe610529dc85263142387dc1dc89e25e5084a /datapath-windows/ovsext/Vport.c
parent1f5b157ece72c6ed346a48309b29ea0a2e1c0c63 (diff)
downloadopenvswitch-47c3123da2d0140299e4f1d9fe4a2922a072ec1b.tar.gz
datapath-windows: Add Geneve support
Signed-off-by: Yin Lin <linyi@vmware.com> Acked-by: Nithin Raju <nithin@vmware.com> Signed-off-by: Gurucharan Shetty <guru@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/Vport.c')
-rw-r--r--datapath-windows/ovsext/Vport.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/datapath-windows/ovsext/Vport.c b/datapath-windows/ovsext/Vport.c
index b69360e84..146245345 100644
--- a/datapath-windows/ovsext/Vport.c
+++ b/datapath-windows/ovsext/Vport.c
@@ -27,6 +27,7 @@
#include "User.h"
#include "Vport.h"
#include "Vxlan.h"
+#include "Geneve.h"
#ifdef OVS_DBG_MOD
#undef OVS_DBG_MOD
@@ -1075,6 +1076,9 @@ OvsInitTunnelVport(PVOID userContext,
case OVS_VPORT_TYPE_STT:
status = OvsInitSttTunnel(vport, dstPort);
break;
+ case OVS_VPORT_TYPE_GENEVE:
+ status = OvsInitGeneveTunnel(vport, dstPort);
+ break;
default:
ASSERT(0);
}
@@ -1218,6 +1222,7 @@ InitOvsVportCommon(POVS_SWITCH_CONTEXT switchContext,
case OVS_VPORT_TYPE_GRE:
case OVS_VPORT_TYPE_VXLAN:
case OVS_VPORT_TYPE_STT:
+ case OVS_VPORT_TYPE_GENEVE:
{
UINT16 dstPort = GetPortFromPriv(vport);
hash = OvsJhashBytes(&dstPort,
@@ -1301,6 +1306,9 @@ OvsRemoveAndDeleteVport(PVOID usrParamsContext,
return status;
}
}
+ case OVS_VPORT_TYPE_GENEVE:
+ OvsCleanupGeneveTunnel(vport);
+ break;
case OVS_VPORT_TYPE_STT:
OvsCleanupSttTunnel(vport);
break;
@@ -1362,9 +1370,7 @@ OvsRemoveAndDeleteVport(PVOID usrParamsContext,
InitializeListHead(&vport->ovsNameLink);
RemoveEntryList(&vport->portNoLink);
InitializeListHead(&vport->portNoLink);
- if (OVS_VPORT_TYPE_VXLAN == vport->ovsType ||
- OVS_VPORT_TYPE_STT == vport->ovsType ||
- OVS_VPORT_TYPE_GRE == vport->ovsType) {
+ if (OvsIsTunnelVportType(vport->ovsType)) {
RemoveEntryList(&vport->tunnelVportLink);
InitializeListHead(&vport->tunnelVportLink);
}
@@ -2255,7 +2261,7 @@ OvsNewVportCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
if (OvsIsTunnelVportType(portType)) {
UINT16 transportPortDest = 0;
- UINT8 nwProto;
+ UINT8 nwProto = IPPROTO_NONE;
POVS_VPORT_ENTRY dupVport;
switch (portType) {
@@ -2266,6 +2272,9 @@ OvsNewVportCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
transportPortDest = VXLAN_UDP_PORT;
nwProto = IPPROTO_UDP;
break;
+ case OVS_VPORT_TYPE_GENEVE:
+ transportPortDest = GENEVE_UDP_PORT;
+ break;
case OVS_VPORT_TYPE_STT:
transportPortDest = STT_TCP_PORT;
nwProto = IPPROTO_TCP;
@@ -2393,6 +2402,9 @@ Cleanup:
case OVS_VPORT_TYPE_STT:
OvsCleanupSttTunnel(vport);
break;
+ case OVS_VPORT_TYPE_GENEVE:
+ OvsCleanupGeneveTunnel(vport);
+ break;
default:
ASSERT(!"Invalid tunnel port type");
}