diff options
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"); } |