mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-05-27 12:52:27 +02:00
refactor: improve network interface validation
Add context parameter to validInterfacesMap for better error handling and logging. Move Windows-specific network adapter validation logic to the ctrld package. Key changes include: - Add context parameter to validInterfacesMap across all platforms - Move Windows validInterfaces to ctrld.ValidInterfaces - Improve error handling for virtual interface detection on Linux - Update all callers to pass appropriate context This change improves error reporting and makes the interface validation code more maintainable across different platforms.
This commit is contained in:
committed by
Cuong Manh Le
parent
627eb23ed6
commit
eaa6ccc356
+5
-5
@@ -1320,8 +1320,8 @@ func canBeLocalUpstream(addr string) bool {
|
||||
// withEachPhysicalInterfaces runs the function f with each physical interfaces, excluding
|
||||
// the interface that matches excludeIfaceName. The context is used to clarify the
|
||||
// log message when error happens.
|
||||
func withEachPhysicalInterfaces(excludeIfaceName, context string, f func(i *net.Interface) error) {
|
||||
validIfacesMap := validInterfacesMap()
|
||||
func withEachPhysicalInterfaces(excludeIfaceName, contextStr string, f func(i *net.Interface) error) {
|
||||
validIfacesMap := validInterfacesMap(ctrld.LoggerCtx(context.Background(), mainLog.Load()))
|
||||
netmon.ForeachInterface(func(i netmon.Interface, prefixes []netip.Prefix) {
|
||||
// Skip loopback/virtual/down interface.
|
||||
if i.IsLoopback() || len(i.HardwareAddr) == 0 {
|
||||
@@ -1345,11 +1345,11 @@ func withEachPhysicalInterfaces(excludeIfaceName, context string, f func(i *net.
|
||||
}
|
||||
// TODO: investigate whether we should report this error?
|
||||
if err := f(netIface); err == nil {
|
||||
if context != "" {
|
||||
mainLog.Load().Debug().Msgf("Ran %s for interface %q successfully", context, i.Name)
|
||||
if contextStr != "" {
|
||||
mainLog.Load().Debug().Msgf("Ran %s for interface %q successfully", contextStr, i.Name)
|
||||
}
|
||||
} else if !errors.Is(err, errSaveCurrentStaticDNSNotSupported) {
|
||||
mainLog.Load().Err(err).Msgf("%s for interface %q failed", context, i.Name)
|
||||
mainLog.Load().Err(err).Msgf("%s for interface %q failed", contextStr, i.Name)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user