mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-07 21:54:54 +08:00
Net 1088 (#2872)
* fix ipv6 only issue * fix InetGw ipv6 issue * refactor constants for NET1088 * fix extClient IPv6 empty issue
This commit is contained in:
parent
d3beb7e523
commit
e0bde5b67f
4 changed files with 30 additions and 5 deletions
|
@ -32,6 +32,9 @@ var networkCreateCmd = &cobra.Command{
|
|||
network.AddressRange6 = address6
|
||||
network.IsIPv6 = "yes"
|
||||
}
|
||||
if address == "" {
|
||||
network.IsIPv4 = "no"
|
||||
}
|
||||
if udpHolePunch {
|
||||
network.DefaultUDPHolePunch = "yes"
|
||||
}
|
||||
|
|
|
@ -372,6 +372,7 @@ func GetPeerListenPort(host *models.Host) int {
|
|||
// GetAllowedIPs - calculates the wireguard allowedip field for a peer of a node based on the peer and node settings
|
||||
func GetAllowedIPs(node, peer *models.Node, metrics *models.Metrics) []net.IPNet {
|
||||
var allowedips []net.IPNet
|
||||
allowedips = getNodeAllowedIPs(peer, node)
|
||||
if peer.IsInternetGateway && node.InternetGwID == peer.ID.String() {
|
||||
allowedips = append(allowedips, GetAllowedIpForInetNodeClient(node, peer)...)
|
||||
return allowedips
|
||||
|
@ -382,7 +383,6 @@ func GetAllowedIPs(node, peer *models.Node, metrics *models.Metrics) []net.IPNet
|
|||
return allowedips
|
||||
}
|
||||
}
|
||||
allowedips = append(allowedips, getNodeAllowedIPs(peer, node)...)
|
||||
|
||||
// handle ingress gateway peers
|
||||
if peer.IsIngressGateway {
|
||||
|
|
|
@ -205,7 +205,7 @@ func (extPeer *ExtClient) AddressIPNet4() net.IPNet {
|
|||
// ExtClient.AddressIPNet6 - return ipv6 IPNet format
|
||||
func (extPeer *ExtClient) AddressIPNet6() net.IPNet {
|
||||
return net.IPNet{
|
||||
IP: net.ParseIP(extPeer.Address),
|
||||
IP: net.ParseIP(extPeer.Address6),
|
||||
Mask: net.CIDRMask(128, 128),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue