fix possible nil dereference

This commit is contained in:
Siyuan 2025-10-10 15:03:23 +00:00
parent 9cd29a3b1b
commit 22f5ed2a8b
1 changed files with 45 additions and 0 deletions

View File

@ -182,6 +182,10 @@ func (im *InterfaceManager) IsUp() bool {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return false
}
return im.state.Up return im.state.Up
} }
@ -190,6 +194,10 @@ func (im *InterfaceManager) IsOnline() bool {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return false
}
return im.state.Online return im.state.Online
} }
@ -198,6 +206,10 @@ func (im *InterfaceManager) IPv4Ready() bool {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return false
}
return im.state.IPv4Ready return im.state.IPv4Ready
} }
@ -206,6 +218,10 @@ func (im *InterfaceManager) IPv6Ready() bool {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return false
}
return im.state.IPv6Ready return im.state.IPv6Ready
} }
@ -214,6 +230,10 @@ func (im *InterfaceManager) GetIPv4Addresses() []string {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return []string{}
}
return im.state.IPv4Addresses return im.state.IPv4Addresses
} }
@ -222,6 +242,10 @@ func (im *InterfaceManager) GetIPv4Address() string {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return ""
}
return im.state.IPv4Address return im.state.IPv4Address
} }
@ -230,6 +254,10 @@ func (im *InterfaceManager) GetIPv6Address() string {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return ""
}
return im.state.IPv6Address return im.state.IPv6Address
} }
@ -239,6 +267,11 @@ func (im *InterfaceManager) GetIPv6Addresses() []string {
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
addresses := []string{} addresses := []string{}
if im.state == nil {
return addresses
}
for _, addr := range im.state.IPv6Addresses { for _, addr := range im.state.IPv6Addresses {
addresses = append(addresses, addr.Address.String()) addresses = append(addresses, addr.Address.String())
} }
@ -251,6 +284,10 @@ func (im *InterfaceManager) GetMACAddress() string {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return ""
}
return im.state.MACAddress return im.state.MACAddress
} }
@ -271,6 +308,10 @@ func (im *InterfaceManager) NTPServers() []net.IP {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return []net.IP{}
}
return im.state.NTPServers return im.state.NTPServers
} }
@ -278,6 +319,10 @@ func (im *InterfaceManager) Domain() string {
im.stateMu.RLock() im.stateMu.RLock()
defer im.stateMu.RUnlock() defer im.stateMu.RUnlock()
if im.state == nil {
return ""
}
if im.state.DHCPLease4 != nil { if im.state.DHCPLease4 != nil {
return im.state.DHCPLease4.Domain return im.state.DHCPLease4.Domain
} }