aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNithin Raju <nithin@vmware.com>2014-10-23 17:33:14 -0700
committerBen Pfaff <blp@nicira.com>2014-10-28 08:45:29 -0700
commit3aa40c8301b3c2538c18569e2a1e05d500b53392 (patch)
tree1e10d073dc8fe65eb088a18006da3d5da8129ed3
parent35f20164e225240e443b9140313ce75539c841d3 (diff)
datapath-windows: OvsFindVportByPortIdAndNicIndex() and external port.
We use OvsFindVportByPortIdAndNicIndex() to lookup the vport for a packte received from the Hyper-V switch. If a packet was indeed received from the virtual external NIC, we should flag it. Validation: 1. Install and Uninstall the OVS EXT Driver (without enabling the OVS extension on the Hyper-V switch). 2. Install and Uninstall the OVS EXT Driver (with enabling the OVS extension on the Hyper-V switch). Hyper-V switch had a few ports. 3. Install and Uninstall the OVS EXT Driver (with enabling the OVS extension on the Hyper-V switch). Added a few ports before uninstalling. 4. Install the OVS EXT driver, and test the following functionality: a) ping between 2 VMs on the same host b) ping between 2 VMs on 2 Hyper-Vs - one physical and another virtual backed by VLAN (patch port between br-pif and br-int). c) ping between 2 VMs on 2 Hyper-Vs - one physical and another virtual backed by VXLAN. d) Successful uninstallation after these tests. Signed-off-by: Nithin Raju <nithin@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Tested-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com> Acked-by: Ankur Sharma <ankursharma@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
-rw-r--r--datapath-windows/ovsext/Vport.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/datapath-windows/ovsext/Vport.c b/datapath-windows/ovsext/Vport.c
index 1e8154ed9..d951d088f 100644
--- a/datapath-windows/ovsext/Vport.c
+++ b/datapath-windows/ovsext/Vport.c
@@ -552,9 +552,13 @@ OvsFindVportByPortIdAndNicIndex(POVS_SWITCH_CONTEXT switchContext,
NDIS_SWITCH_PORT_ID portId,
NDIS_SWITCH_NIC_INDEX index)
{
- if (portId == switchContext->virtualExternalPortId) {
+ if (switchContext->virtualExternalVport &&
+ portId == switchContext->virtualExternalPortId &&
+ index == switchContext->virtualExternalVport->nicIndex) {
return (POVS_VPORT_ENTRY)switchContext->virtualExternalVport;
- } else if (switchContext->internalPortId == portId) {
+ } else if (switchContext->internalVport &&
+ portId == switchContext->internalPortId &&
+ index == switchContext->internalVport->nicIndex) {
return (POVS_VPORT_ENTRY)switchContext->internalVport;
} else {
PLIST_ENTRY head, link;