Just a minor detail, but ConvertInterfaceLuidToAlias() seems to be returning something of type NETIO_STATUS, with NO_ERROR indicating success. We should probably use the appropriate type.
Looks good otherwise. Thanks for doing this. Acked-by: Nithin Raju <nit...@vmware.com> -----Original Message----- From: Sairam Venugopal <vsai...@vmware.com> Date: Monday, November 2, 2015 at 5:05 PM To: "dev@openvswitch.org" <dev@openvswitch.org> Subject: [ovs-dev] [PATCH] datapath-windows: Updating an External Adapter causes flow lookup failure >This patch fixes an issue with updating the propeties of an external >adapter in Windows. The issue causes flow lookups to fail until the >kernel is reinstalled. > >Associated bug - >https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openvswitc >h_ovs-2Dissues_issues_102&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNt >Xt-uEs&r=pNHQcdr7B40b4h6Yb7FIedI1dnBsxdDuTLBYD3JqV80&m=uzGKohGZgRODAcZXf_e >RokVXtUFLDB5d0wjXmf4YDso&s=2qfpFBiaYnXUUwr5rtdDaoA_VofV0qetJrgkiHbXLvQ&e= > >Signed-off-by: Sairam Venugopal <vsai...@vmware.com> >--- > datapath-windows/ovsext/Vport.c | 40 >++++++++++++++++++++++++++++++++++++---- > 1 file changed, 36 insertions(+), 4 deletions(-) > >diff --git a/datapath-windows/ovsext/Vport.c >b/datapath-windows/ovsext/Vport.c >index 4ade842..812e62b 100644 >--- a/datapath-windows/ovsext/Vport.c >+++ b/datapath-windows/ovsext/Vport.c >@@ -322,19 +322,51 @@ HvCreateNic(POVS_SWITCH_CONTEXT switchContext, > POVS_VPORT_ENTRY virtExtVport = > (POVS_VPORT_ENTRY)switchContext->virtualExternalVport; > >- vport = (POVS_VPORT_ENTRY)OvsAllocateVport(); >+ vport = OvsFindVportByPortIdAndNicIndex(switchContext, >+ nicParam->PortId, >+ nicParam->NicIndex); > if (vport == NULL) { >- status = NDIS_STATUS_RESOURCES; >- goto add_nic_done; >+ /* Find by interface name */ >+ WCHAR interfaceName[IF_MAX_STRING_SIZE] = { 0 }; >+ NET_LUID interfaceLuid = { 0 }; >+ size_t len = 0; >+ status = >ConvertInterfaceGuidToLuid(&nicParam->NetCfgInstanceId, >+ &interfaceLuid); >+ if (status == NDIS_STATUS_SUCCESS) { >+ status = ConvertInterfaceLuidToAlias(&interfaceLuid, >+ interfaceName, >+ IF_MAX_STRING_SIZE >+ 1); >+ if (status == NDIS_STATUS_SUCCESS) { >+ RtlStringCbLengthW(interfaceName, >+ IF_MAX_STRING_SIZE, >+ &len); >+ vport = OvsFindVportByHvNameW(switchContext, >+ interfaceName, >+ len); >+ } >+ } >+ >+ if (vport == NULL) { >+ /* XXX: Handle this event appropriately */ >+ vport = (POVS_VPORT_ENTRY)OvsAllocateVport(); >+ if (vport == NULL) { >+ status = NDIS_STATUS_RESOURCES; >+ goto add_nic_done; >+ } >+ } > } >+ > OvsInitPhysNicVport(vport, virtExtVport, nicParam->NicIndex); >+ OvsInitVportWithNicParam(switchContext, vport, nicParam); > status = InitHvVportCommon(switchContext, vport, TRUE); >+ vport->isAbsentOnHv = FALSE; > if (status != NDIS_STATUS_SUCCESS) { > OvsFreeMemoryWithTag(vport, OVS_VPORT_POOL_TAG); > goto add_nic_done; > } >+ } else { >+ OvsInitVportWithNicParam(switchContext, vport, nicParam); > } >- OvsInitVportWithNicParam(switchContext, vport, nicParam); > portNo = vport->portNo; > if (vport->ovsState == OVS_STATE_CONNECTED) { > event = OVS_EVENT_CONNECT | OVS_EVENT_LINK_UP; >-- >1.9.5.msysgit.0 > >_______________________________________________ >dev mailing list >dev@openvswitch.org >https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailma >n_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=pN >HQcdr7B40b4h6Yb7FIedI1dnBsxdDuTLBYD3JqV80&m=uzGKohGZgRODAcZXf_eRokVXtUFLDB >5d0wjXmf4YDso&s=nzNtvc9DhUaN4oQfMh7GTPzwdWw1TMB8xiGsYawULdA&e= _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev