cmd/cli: only list physical interfaces when listing

Since these are the interfaces that ctrld will manipulate anyway.

While at it, also skipping non-working devices on MacOS, by checking
if the device is present in network service order
This commit is contained in:
Cuong Manh Le
2025-01-20 15:00:08 +07:00
committed by Cuong Manh Le
parent 7833132917
commit 841be069b7
6 changed files with 24 additions and 16 deletions
+5 -2
View File
@@ -1119,7 +1119,7 @@ func canBeLocalUpstream(addr string) bool {
func withEachPhysicalInterfaces(excludeIfaceName, context string, f func(i *net.Interface) error) {
validIfacesMap := validInterfacesMap()
netmon.ForeachInterface(func(i netmon.Interface, prefixes []netip.Prefix) {
// Skip loopback/virtual interface.
// Skip loopback/virtual/down interface.
if i.IsLoopback() || len(i.HardwareAddr) == 0 {
return
}
@@ -1128,9 +1128,12 @@ func withEachPhysicalInterfaces(excludeIfaceName, context string, f func(i *net.
return
}
netIface := i.Interface
if err := patchNetIfaceName(netIface); err != nil {
if patched, err := patchNetIfaceName(netIface); err != nil {
mainLog.Load().Debug().Err(err).Msg("failed to patch net interface name")
return
} else if !patched {
// The interface is not functional, skipping.
return
}
// Skip excluded interface.
if netIface.Name == excludeIfaceName {