Skip to content

Commit

Permalink
fix InetGw ipv6 issue
Browse files Browse the repository at this point in the history
  • Loading branch information
yabinma committed Mar 25, 2024
1 parent 9e6abf7 commit 1deca92
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
2 changes: 1 addition & 1 deletion logic/peers.go
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,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
Expand All @@ -381,7 +382,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 {
Expand Down
23 changes: 20 additions & 3 deletions pro/logic/nodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,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
Expand All @@ -118,7 +121,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
}
Expand All @@ -140,6 +145,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("0.0.0.0/0")
allowedips = append(allowedips, *ipnet)
return allowedips
}

if peer.Address6.IP != nil {
_, ipnet, _ := net.ParseCIDR("0::/0")
allowedips = append(allowedips, *ipnet)
}

return allowedips
}

0 comments on commit 1deca92

Please sign in to comment.