From ffde5f8f292055c36d41651967ca057d30ded877 Mon Sep 17 00:00:00 2001 From: Sorin Vinturis Date: Wed, 27 May 2015 16:58:25 +0000 Subject: datapath-windows: Support for multiple VXLAN tunnels At the moment the OVS extension supports only one VXLAN tunnel that is cached in the extension switch context. Replaced the latter cached pointer with an array list that contains all VXLAN tunnel vports. Signed-off-by: Sorin Vinturis Reported-by: Alin Gabriel Serdean Reported-at: https://github.com/openvswitch/ovs-issues/issues/64 Acked-by: Eitan Eliahu Acked-by: Nithin Raju Signed-off-by: Ben Pfaff --- datapath-windows/ovsext/Vport.h | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'datapath-windows/ovsext/Vport.h') diff --git a/datapath-windows/ovsext/Vport.h b/datapath-windows/ovsext/Vport.h index 593805315..84ac3d3fa 100644 --- a/datapath-windows/ovsext/Vport.h +++ b/datapath-windows/ovsext/Vport.h @@ -84,6 +84,7 @@ typedef struct _OVS_VPORT_ENTRY { LIST_ENTRY ovsNameLink; LIST_ENTRY portIdLink; LIST_ENTRY portNoLink; + LIST_ENTRY tunnelVportLink; OVS_VPORT_STATE ovsState; OVS_VPORT_TYPE ovsType; @@ -135,10 +136,8 @@ typedef struct _OVS_VPORT_ENTRY { struct _OVS_SWITCH_CONTEXT; -POVS_VPORT_ENTRY -OvsFindVportByPortNo(struct _OVS_SWITCH_CONTEXT *switchContext, - UINT32 portNo); - +POVS_VPORT_ENTRY OvsFindVportByPortNo(POVS_SWITCH_CONTEXT switchContext, + UINT32 portNo); /* "name" is null-terminated */ POVS_VPORT_ENTRY OvsFindVportByOvsName(POVS_SWITCH_CONTEXT switchContext, PSTR name); @@ -147,6 +146,8 @@ POVS_VPORT_ENTRY OvsFindVportByHvNameA(POVS_SWITCH_CONTEXT switchContext, POVS_VPORT_ENTRY OvsFindVportByPortIdAndNicIndex(POVS_SWITCH_CONTEXT switchContext, NDIS_SWITCH_PORT_ID portId, NDIS_SWITCH_NIC_INDEX index); +POVS_VPORT_ENTRY OvsFindTunnelVportByDstPort(POVS_SWITCH_CONTEXT switchContext, + UINT16 dstPort); NDIS_STATUS OvsAddConfiguredSwitchPorts(struct _OVS_SWITCH_CONTEXT *switchContext); NDIS_STATUS OvsInitConfiguredSwitchNics(struct _OVS_SWITCH_CONTEXT *switchContext); @@ -180,18 +181,6 @@ OvsIsTunnelVportType(OVS_VPORT_TYPE ovsType) ovsType == OVS_VPORT_TYPE_GRE64; } -static __inline POVS_VPORT_ENTRY -OvsGetTunnelVport(POVS_SWITCH_CONTEXT switchContext, - OVS_VPORT_TYPE ovsType) -{ - switch(ovsType) { - case OVS_VPORT_TYPE_VXLAN: - return switchContext->vxlanVport; - default: - return NULL; - } -} - static __inline BOOLEAN OvsIsInternalVportType(OVS_VPORT_TYPE ovsType) { -- cgit v1.2.1