Changed GetNetworkInterfaces method to to retrieve information related to all interfaces#100824
Changed GetNetworkInterfaces method to to retrieve information related to all interfaces#100824wfurt merged 8 commits intodotnet:mainfrom
Conversation
… including disabled ones
…per speeds; non-positive speeds indicates absence of physical address.
wfurt
left a comment
There was a problem hiding this comment.
test failure seems related
Starting: System.Net.NetworkInformation.Functional.Tests (parallel test collections = on [2 threads], stop on fail = off)
System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest.BasicTest_AccessInstanceProperties_NoExceptions [FAIL]
Assert.Equal() Failure: Values differ
Expected: 6
Actual: 0
Stack Trace:
/_/src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/NetworkInterfaceBasicTest.cs(55,0): at System.Net.NetworkInformation.Tests.NetworkInterfaceBasicTest.BasicTest_AccessInstanceProperties_NoExceptions()
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
/_/src/coreclr/System.Private.CoreLib/src/System/Reflection/MethodBaseInvoker.CoreCLR.cs(36,0): at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
/_/src/libraries/System.Private.CoreLib/src/System/Reflection/MethodBaseInvoker.cs(57,0): at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Output:
- NetworkInterface -
Name: Ethernet 2
Description: Microsoft Hyper-V Network Adapter #2
ID: {5A812509-8FA5-4802-9EAC-92A43D5C3D7D}
IsReceiveOnly: False
Type: Ethernet
Status: Up
Speed: 50000000000
SupportsMulticast: True
GetPhysicalAddress(): 000D3A5A03C9
- NetworkInterface -
Name: Loopback Pseudo-Interface 1
Description: Software Loopback Interface 1
ID: {46BCBBDA-D902-11EE-A1F4-806E6F6E6963}
IsReceiveOnly: False
Type: Loopback
Status: Up
Speed: 1073741824
SupportsMulticast: True
GetPhysicalAddress():
- NetworkInterface -
Name: vEthernet (nat)
Description: Hyper-V Virtual Ethernet Adapter
ID: {30CAB5C1-869C-4879-AF7F-BF5232024FC8}
IsReceiveOnly: False
Type: Ethernet
Status: Up
Speed: 10000000000
SupportsMulticast: True
GetPhysicalAddress(): 00155D4F8F8B
- NetworkInterface -
Name: vSwitch (nat)-Hyper-V Virtual Switch Extension Filter-0000
Description: Hyper-V Virtual Switch Extension Adapter-Hyper-V Virtual Switch Extension Filter-0000
ID: {9330C02E-F697-11EE-A203-000D3A5A03C9}
IsReceiveOnly: False
Type: Ethernet
Status: Up
Speed: 10000000000
SupportsMulticast: True
GetPhysicalAddress():
Finished: System.Net.NetworkInformation.Functional.Tests
=== TEST EXECUTION SUMMARY ===
System.Net.NetworkInformation.Functional.Tests Total: 244, Errors: 0, Failed: 1, Skipped: 0, Time: 0.725s
|
@wfurt I just investigated the issues related to the change because now we list all interfaces. Based on test logs, it fails on "Microsoft Hyper-V Network Adapter" I just enabled Hyper-V on my local and got the same error. After investigation, I figured out there are some NICs without a Mac address, so this assertion part of this test is invalid and should be removed. Based on the documentation of GetAdaptersAddresses, this change will retrieve even those addresses associated with adapters not bound to an address family specified in the Family parameter.
I just removed that assertion because it's not valid anymore. |
what does it return @MojtabaTajik? I'm generally ok with the approach. However it seems like this only one call to |
|
@wfurt Indeed, it returns 0 for those NICs that lack a physical address. |
wfurt
left a comment
There was a problem hiding this comment.
LGTM. Thanks @MojtabaTajik for the contribution.
|
all test failures are known errors. |
|
Related performance regressions: |
…d to all interfaces (dotnet#100824) * Add IncludeAllInterfaces as falg to reterive all avaliable interfaces including disabled ones * Update tests to accommodate new adapters. Ensure adapters reflect proper speeds; non-positive speeds indicates absence of physical address. * Removed unnecessary assertion * Add assertion over physical address bytes
…d to all interfaces (dotnet#100824) * Add IncludeAllInterfaces as falg to reterive all avaliable interfaces including disabled ones * Update tests to accommodate new adapters. Ensure adapters reflect proper speeds; non-positive speeds indicates absence of physical address. * Removed unnecessary assertion * Add assertion over physical address bytes
Based on Microsoft documentation, we should pass "GAA_FLAG_INCLUDE_ALL_INTERFACES" to retrieve information related to all interfaces.
Fix #89990