diff --git a/pro/logic/nodes.go b/pro/logic/nodes.go index 4bad2de6..26e92eff 100644 --- a/pro/logic/nodes.go +++ b/pro/logic/nodes.go @@ -107,9 +107,13 @@ func UnsetInternetGw(node *models.Node) { func SetDefaultGwForRelayedUpdate(relayed, relay models.Node, peerUpdate models.HostPeerUpdate) models.HostPeerUpdate { if relay.InternetGwID != "" { + relayedHost, err := logic.GetHost(relayed.HostID.String()) + if err != nil { + return peerUpdate + } peerUpdate.ChangeDefaultGw = true peerUpdate.DefaultGwIp = relay.Address.IP - if peerUpdate.DefaultGwIp == nil { + if peerUpdate.DefaultGwIp == nil || relayedHost.EndpointIP == nil { peerUpdate.DefaultGwIp = relay.Address6.IP } @@ -124,9 +128,14 @@ func SetDefaultGw(node models.Node, peerUpdate models.HostPeerUpdate) models.Hos if err != nil { return peerUpdate } + host, err := logic.GetHost(node.HostID.String()) + if err != nil { + return peerUpdate + } + peerUpdate.ChangeDefaultGw = true peerUpdate.DefaultGwIp = inetNode.Address.IP - if peerUpdate.DefaultGwIp == nil { + if peerUpdate.DefaultGwIp == nil || host.EndpointIP == nil { peerUpdate.DefaultGwIp = inetNode.Address6.IP } } @@ -155,7 +164,6 @@ func GetAllowedIpForInetNodeClient(node, peer *models.Node) []net.IPNet { if peer.Address.IP != nil { _, ipnet, _ := net.ParseCIDR(IPv4Network) allowedips = append(allowedips, *ipnet) - return allowedips } if peer.Address6.IP != nil {