|
@@ -10,6 +10,11 @@ import (
|
|
|
"golang.org/x/exp/slog"
|
|
|
)
|
|
|
|
|
|
+const (
|
|
|
+ IPv4Network = "0.0.0.0/0"
|
|
|
+ IPv6Network = "::/0"
|
|
|
+)
|
|
|
+
|
|
|
func ValidateInetGwReq(inetNode models.Node, req models.InetNodeReq, update bool) error {
|
|
|
inetHost, err := logic.GetHost(inetNode.HostID.String())
|
|
|
if err != nil {
|
|
@@ -104,6 +109,9 @@ func SetDefaultGwForRelayedUpdate(relayed, relay models.Node, peerUpdate models.
|
|
|
if relay.InternetGwID != "" {
|
|
|
peerUpdate.ChangeDefaultGw = true
|
|
|
peerUpdate.DefaultGwIp = relay.Address.IP
|
|
|
+ if peerUpdate.DefaultGwIp == nil {
|
|
|
+ peerUpdate.DefaultGwIp = relay.Address6.IP
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
return peerUpdate
|
|
@@ -118,7 +126,9 @@ func SetDefaultGw(node models.Node, peerUpdate models.HostPeerUpdate) models.Hos
|
|
|
}
|
|
|
peerUpdate.ChangeDefaultGw = true
|
|
|
peerUpdate.DefaultGwIp = inetNode.Address.IP
|
|
|
-
|
|
|
+ if peerUpdate.DefaultGwIp == nil {
|
|
|
+ peerUpdate.DefaultGwIp = inetNode.Address6.IP
|
|
|
+ }
|
|
|
}
|
|
|
return peerUpdate
|
|
|
}
|
|
@@ -140,6 +150,18 @@ func GetNetworkIngresses(network string) ([]models.Node, error) {
|
|
|
|
|
|
// GetAllowedIpsForInet - get inet cidr for node using a inet gw
|
|
|
func GetAllowedIpForInetNodeClient(node, peer *models.Node) []net.IPNet {
|
|
|
- _, ipnet, _ := net.ParseCIDR("0.0.0.0/0")
|
|
|
- return []net.IPNet{*ipnet}
|
|
|
+ var allowedips = []net.IPNet{}
|
|
|
+
|
|
|
+ if peer.Address.IP != nil {
|
|
|
+ _, ipnet, _ := net.ParseCIDR(IPv4Network)
|
|
|
+ allowedips = append(allowedips, *ipnet)
|
|
|
+ return allowedips
|
|
|
+ }
|
|
|
+
|
|
|
+ if peer.Address6.IP != nil {
|
|
|
+ _, ipnet, _ := net.ParseCIDR(IPv6Network)
|
|
|
+ allowedips = append(allowedips, *ipnet)
|
|
|
+ }
|
|
|
+
|
|
|
+ return allowedips
|
|
|
}
|