diff options
author | Yin Lin <linyi@vmware.com> | 2016-06-24 14:44:30 -0700 |
---|---|---|
committer | Gurucharan Shetty <guru@ovn.org> | 2016-06-24 14:47:15 -0700 |
commit | 47c3123da2d0140299e4f1d9fe4a2922a072ec1b (patch) | |
tree | 2eabe610529dc85263142387dc1dc89e25e5084a /datapath-windows/ovsext/Vport.c | |
parent | 1f5b157ece72c6ed346a48309b29ea0a2e1c0c63 (diff) | |
download | openvswitch-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.c | 20 |
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"); } |