Acked-by: Sairam Venugopal <vsai...@vmware.com>
On 9/11/15, 4:09 AM, "Sorin Vinturis" <svintu...@cloudbasesolutions.com> wrote: >The internal/external vports will have the actual OS-based names, which >represent the NIC interface alias that is displayed by running >'Get-NetAdapter' Hyper-V PS command. > >Signed-off-by: Sorin Vinturis <svintu...@cloudbasesolutions.com> >--- > datapath-windows/ovsext/Vport.c | 52 >+++++++++++++++++++++++++---------------- > 1 file changed, 32 insertions(+), 20 deletions(-) > >diff --git a/datapath-windows/ovsext/Vport.c >b/datapath-windows/ovsext/Vport.c >index ea10692..8a7a8b9 100644 >--- a/datapath-windows/ovsext/Vport.c >+++ b/datapath-windows/ovsext/Vport.c >@@ -890,6 +890,10 @@ OvsInitPhysNicVport(POVS_VPORT_ENTRY physExtVport, > &virtExtVport->portFriendlyName, > sizeof(NDIS_SWITCH_PORT_FRIENDLYNAME)); > >+ RtlCopyMemory(&physExtVport->netCfgInstanceId, >+ &virtExtVport->netCfgInstanceId, >+ sizeof(physExtVport->netCfgInstanceId)); >+ > physExtVport->ovsState = OVS_STATE_PORT_CREATED; > } > >@@ -968,36 +972,42 @@ OvsInitBridgeInternalVport(POVS_VPORT_ENTRY vport) > > /* > * >-------------------------------------------------------------------------- >- * For external vports 'portFriendlyName' provided by Hyper-V is >over-written >- * by synthetic names. >+ * For external and internal vports 'portFriendlyName' parameter, >provided by >+ * Hyper-V, is overwritten with the interface alias name. > * >-------------------------------------------------------------------------- > */ > static VOID > AssignNicNameSpecial(POVS_VPORT_ENTRY vport) > { >- size_t len; >+ NTSTATUS status = STATUS_SUCCESS; >+ WCHAR interfaceName[IF_MAX_STRING_SIZE] = { 0 }; >+ NET_LUID interfaceLuid = { 0 }; >+ size_t len = 0; > >- if (vport->portType == NdisSwitchPortTypeExternal) { >- if (vport->nicIndex == 0) { >- ASSERT(vport->nicIndex == 0); >- RtlStringCbPrintfW(vport->portFriendlyName.String, >- IF_MAX_STRING_SIZE, >- L"%s.virtualAdapter", >OVS_DPPORT_EXTERNAL_NAME_W); >+ ASSERT(vport->portType == NdisSwitchPortTypeExternal || >+ vport->portType == NdisSwitchPortTypeInternal); >+ >+ status = ConvertInterfaceGuidToLuid(&vport->netCfgInstanceId, >+ &interfaceLuid); >+ if (status == STATUS_SUCCESS) { >+ status = ConvertInterfaceLuidToAlias(&interfaceLuid, >interfaceName, >+ IF_MAX_STRING_SIZE + 1); >+ } >+ >+ if (status == STATUS_SUCCESS) { >+ if (vport->portType == NdisSwitchPortTypeExternal && >+ vport->nicIndex == 0) { >+ RtlStringCbPrintfW(vport->portFriendlyName.String, >IF_MAX_STRING_SIZE, >+ L"%s.virtualAdapter", interfaceName); > } else { > RtlStringCbPrintfW(vport->portFriendlyName.String, >- IF_MAX_STRING_SIZE, >- L"%s.%lu", OVS_DPPORT_EXTERNAL_NAME_W, >- (UINT32)vport->nicIndex); >+ IF_MAX_STRING_SIZE, L"%s", interfaceName); > } >- } else { >- RtlStringCbPrintfW(vport->portFriendlyName.String, >- IF_MAX_STRING_SIZE, >- L"%s", OVS_DPPORT_INTERNAL_NAME_W); >- } > >- RtlStringCbLengthW(vport->portFriendlyName.String, >IF_MAX_STRING_SIZE, >- &len); >- vport->portFriendlyName.Length = (USHORT)len; >+ RtlStringCbLengthW(vport->portFriendlyName.String, >IF_MAX_STRING_SIZE, >+ &len); >+ vport->portFriendlyName.Length = (USHORT)len; >+ } > } > > >@@ -1399,6 +1409,8 @@ OvsInitConfiguredSwitchNics(POVS_SWITCH_CONTEXT >switchContext) > } > OvsInitVportWithNicParam(switchContext, vport, nicParam); > if (nicParam->NicType == NdisSwitchNicTypeInternal) { >+ /* Overwrite the 'portFriendlyName' of the internal vport. */ >+ AssignNicNameSpecial(vport); > OvsInternalAdapterUp(vport->portNo, >&nicParam->NetCfgInstanceId); > } > } >-- >1.9.0.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=Dc >ruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmNR3JEQ&m=zAtvFtjGXZTRMwH_WeG9ZtoA0pCh5j >fPIpUDWqmj0fk&s=rMr-uw1Z7ZESYsUW6gADQE-nLOIZuOX-ifB2vTGXZds&e= _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev