Skip to content

Commit b4a69c2

Browse files
committed
fix(client): extract networkAddressWatchInterval constant
Replace magic number 10*time.Second with a named constant to satisfy SonarCloud code-smell check.
1 parent 3dc24af commit b4a69c2

2 files changed

Lines changed: 59 additions & 41 deletions

File tree

client/internal/engine.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ const (
7777
PeerConnectionTimeoutMax = 45000 // ms
7878
PeerConnectionTimeoutMin = 30000 // ms
7979
disableAutoUpdate = "disabled"
80+
networkAddressWatchInterval = 10 * time.Second
8081
networkAddressResyncDebounce = 30 * time.Second
8182
)
8283

@@ -1044,7 +1045,7 @@ func (e *Engine) ResyncNetworkAddresses() {
10441045
// ensuring posture checks always evaluate the current network state.
10451046
func (e *Engine) startNetworkAddressWatcher() {
10461047
defer e.shutdownWg.Done()
1047-
ticker := time.NewTicker(10 * time.Second)
1048+
ticker := time.NewTicker(networkAddressWatchInterval)
10481049
defer ticker.Stop()
10491050

10501051
for {

client/system/network_addresses_android.go

Lines changed: 57 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -108,52 +108,69 @@ func parseExternalIfaces(raw string) ([]net.Interface, map[string][]net.Addr) {
108108
continue
109109
}
110110

111-
var name string
112-
var index, mtu int
113-
var up, broadcast, loopback, pointToPoint, multicast bool
114-
_, err := fmt.Sscanf(fields[0], "%s %d %d %t %t %t %t %t",
115-
&name, &index, &mtu, &up, &broadcast, &loopback, &pointToPoint, &multicast)
111+
ni, err := parseIfaceHeader(fields[0])
116112
if err != nil {
117-
log.Warnf("network_addresses_android: cannot parse iface header %q: %v", fields[0], err)
113+
log.Warnf("network_addresses_android: %v", err)
118114
continue
119115
}
116+
ifaces = append(ifaces, ni)
117+
addrMap[ni.Name] = parseIfaceAddrs(fields[1])
118+
}
119+
return ifaces, addrMap
120+
}
120121

121-
ni := net.Interface{
122-
Name: name,
123-
Index: index,
124-
MTU: mtu,
125-
}
126-
if up {
127-
ni.Flags |= net.FlagUp
128-
}
129-
if broadcast {
130-
ni.Flags |= net.FlagBroadcast
131-
}
132-
if loopback {
133-
ni.Flags |= net.FlagLoopback
134-
}
135-
if pointToPoint {
136-
ni.Flags |= net.FlagPointToPoint
137-
}
138-
if multicast {
139-
ni.Flags |= net.FlagMulticast
122+
// parseIfaceHeader parses the header portion of an external interface line
123+
// (everything before the "|") into a net.Interface with the correct flags.
124+
func parseIfaceHeader(header string) (net.Interface, error) {
125+
var name string
126+
var index, mtu int
127+
var up, broadcast, loopback, pointToPoint, multicast bool
128+
_, err := fmt.Sscanf(header, "%s %d %d %t %t %t %t %t",
129+
&name, &index, &mtu, &up, &broadcast, &loopback, &pointToPoint, &multicast)
130+
if err != nil {
131+
return net.Interface{}, fmt.Errorf("cannot parse iface header %q: %v", header, err)
132+
}
133+
134+
ni := net.Interface{
135+
Name: name,
136+
Index: index,
137+
MTU: mtu,
138+
}
139+
140+
type flagEntry struct {
141+
set bool
142+
flag net.Flags
143+
}
144+
for _, f := range []flagEntry{
145+
{up, net.FlagUp},
146+
{broadcast, net.FlagBroadcast},
147+
{loopback, net.FlagLoopback},
148+
{pointToPoint, net.FlagPointToPoint},
149+
{multicast, net.FlagMulticast},
150+
} {
151+
if f.set {
152+
ni.Flags |= f.flag
140153
}
141-
ifaces = append(ifaces, ni)
154+
}
155+
156+
return ni, nil
157+
}
142158

143-
var addrs []net.Addr
144-
for _, addr := range strings.Split(strings.Trim(fields[1], " \n"), " ") {
145-
if addr == "" || strings.Contains(addr, "%") {
146-
continue
147-
}
148-
ip, ipNet, err := net.ParseCIDR(addr)
149-
if err != nil {
150-
log.Warnf("network_addresses_android: cannot parse addr %q: %v", addr, err)
151-
continue
152-
}
153-
ipNet.IP = ip
154-
addrs = append(addrs, ipNet)
159+
// parseIfaceAddrs parses the address portion of an external interface line
160+
// (everything after the "|") into a slice of net.Addr.
161+
func parseIfaceAddrs(raw string) []net.Addr {
162+
var addrs []net.Addr
163+
for _, addr := range strings.Split(strings.Trim(raw, " \n"), " ") {
164+
if addr == "" || strings.Contains(addr, "%") {
165+
continue
166+
}
167+
ip, ipNet, err := net.ParseCIDR(addr)
168+
if err != nil {
169+
log.Warnf("network_addresses_android: cannot parse addr %q: %v", addr, err)
170+
continue
155171
}
156-
addrMap[name] = addrs
172+
ipNet.IP = ip
173+
addrs = append(addrs, ipNet)
157174
}
158-
return ifaces, addrMap
175+
return addrs
159176
}

0 commit comments

Comments
 (0)