From 2e238abe013281e1d49f6c7881fc0212258f968d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Fri, 21 Aug 2026 10:44:15 +0800 Subject: [PATCH] Fix network environment log --- route/network_environment.go | 46 ++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/route/network_environment.go b/route/network_environment.go index 68e5b969..a3c6d2da 100644 --- a/route/network_environment.go +++ b/route/network_environment.go @@ -37,7 +37,11 @@ func (r *NetworkManager) updateNetworkEnvironment() { if r.interfaceMonitor != nil { defaultInterface = r.DefaultNetworkInterface() } - var environment []string + var ( + gatewayStrings []string + hardwareStrings []string + wifiSSID string + ) if defaultInterface != nil { gateways := defaultInterface.Gateways if len(gateways) == 0 { @@ -45,27 +49,35 @@ func (r *NetworkManager) updateNetworkEnvironment() { } gateways = common.Uniq(gateways) slices.SortFunc(gateways, netip.Addr.Compare) - for _, gateway := range gateways { - environment = append(environment, "gateway:"+gateway.String()) - } + gatewayStrings = common.Map(gateways, netip.Addr.String) wifiState := r.WIFIState() if wifiState.SSID != "" { - environment = append(environment, "ssid:"+wifiState.SSID) + wifiSSID = wifiState.SSID } else if len(gateways) > 0 { hardwareAddresses := systemNeighborHardwareAddresses(defaultInterface.Interface.Index, gateways) for _, gateway := range gateways { hardwareAddress := hardwareAddresses[gateway] if len(hardwareAddress) > 0 { - environment = append(environment, "gateway_mac:"+hardwareAddress.String()) + hardwareStrings = append(hardwareStrings, hardwareAddress.String()) } } } } + var options []string + if len(gatewayStrings) > 0 { + options = append(options, "gateway "+formatEnvironmentValues(gatewayStrings)) + } + if wifiSSID != "" { + options = append(options, "ssid "+wifiSSID) + } + if len(hardwareStrings) > 0 { + options = append(options, "gateway_mac "+formatEnvironmentValues(hardwareStrings)) + } var environmentHash uint64 - if len(environment) > 0 { + if len(options) > 0 { digest := fnv.New64a() - for _, entry := range environment { - digest.Write([]byte(entry)) + for _, option := range options { + digest.Write([]byte(option)) digest.Write([]byte{0}) } environmentHash = digest.Sum64() @@ -74,11 +86,15 @@ func (r *NetworkManager) updateNetworkEnvironment() { changed := environmentHash != r.networkEnvironment r.networkEnvironment = environmentHash r.stateAccess.Unlock() - if changed { - if len(environment) > 0 { - r.logger.Info("updated network environment: ", strings.Join(environment, ", ")) - } else { - r.logger.Info("updated network environment: empty") - } + if !changed || len(options) == 0 { + return } + r.logger.Info("updated network environment: ", strings.Join(options, ", ")) +} + +func formatEnvironmentValues(values []string) string { + if len(values) == 1 { + return values[0] + } + return "[" + strings.Join(values, " ") + "]" }