cmd/cli: fix getting interface name when disabled on Windows

By getting the name property directly from adapter instance, instead of
using net.InterfaceByIndex function, which could return an error when
the adapter is disabled.
This commit is contained in:
Cuong Manh Le authored and Cuong Manh Le committed 2025-01-20 15:03:40 +07:00
1 parent 2687a4a018
commit 9718ab8579
1 file changed
+6 -11
+6 -11
View File
@@ -41,7 +41,7 @@ func validInterfaces() []string {
q := query.NewWmiQuery("MSFT_NetAdapter")
instances, err := instance.GetWmiInstancesFromHost(whost, string(constant.StadardCimV2), q)
if err != nil {
mainLog.Load().Err(err).Msg("failed to get wmi network adapter")
mainLog.Load().Warn().Err(err).Msg("failed to get wmi network adapter")
return nil
}
defer instances.Close()
@@ -49,7 +49,7 @@ func validInterfaces() []string {
for _, i := range instances {
adapter, err := netadapter.NewNetworkAdapter(i)
if err != nil {
mainLog.Load().Err(err).Msg("failed to get network adapter")
mainLog.Load().Warn().Err(err).Msg("failed to get network adapter")
continue
}
// From: https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/hh968170(v=vs.85)
@@ -58,23 +58,18 @@ func validInterfaces() []string {
// if this is a physical adapter or FALSE if this is not a physical adapter."
physical, err := adapter.GetPropertyConnectorPresent()
if err != nil {
mainLog.Load().Err(err).Msg("failed to get network adapter connector present property")
mainLog.Load().Warn().Err(err).Msg("failed to get network adapter connector present property")
continue
}
if !physical {
continue
}
ifaceIdx, err := adapter.GetInterfaceIndex()
name, err := adapter.GetPropertyName()
if err != nil {
mainLog.Load().Err(err).Msg("failed to get interface index")
mainLog.Load().Warn().Err(err).Msg("failed to get interface name")
continue
}
iff, err := net.InterfaceByIndex(int(ifaceIdx))
if err != nil {
mainLog.Load().Err(err).Msg("failed to get interface")
continue
}
adapters = append(adapters, iff.Name)
adapters = append(adapters, name)
}
return adapters
}