mirror of
https://github.com/gravitl/netmaker.git
synced 2025-02-28 10:04:59 +08:00
Merge pull request #816 from gravitl/feature_v0.11.0_hublogic
fixed hub logic
This commit is contained in:
commit
d086360695
2 changed files with 15 additions and 7 deletions
|
@ -15,6 +15,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetHubPeer - in HubAndSpoke networks, if not the hub, return the hub
|
// GetHubPeer - in HubAndSpoke networks, if not the hub, return the hub
|
||||||
|
/*
|
||||||
func GetHubPeer(networkName string) []models.Node {
|
func GetHubPeer(networkName string) []models.Node {
|
||||||
var hubpeer = make([]models.Node, 0)
|
var hubpeer = make([]models.Node, 0)
|
||||||
servernodes, err := GetNetworkNodes(networkName)
|
servernodes, err := GetNetworkNodes(networkName)
|
||||||
|
@ -28,9 +29,10 @@ func GetHubPeer(networkName string) []models.Node {
|
||||||
}
|
}
|
||||||
return hubpeer
|
return hubpeer
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
// GetNodePeers - fetches peers for a given node
|
// GetNodePeers - fetches peers for a given node
|
||||||
func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error) {
|
func GetNodePeers(networkName string, excludeRelayed bool, isP2S bool) ([]models.Node, error) {
|
||||||
var peers []models.Node
|
var peers []models.Node
|
||||||
var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName)
|
var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -76,9 +78,11 @@ func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if !isP2S || peer.IsHub == "yes" {
|
||||||
peers = append(peers, peer)
|
peers = append(peers, peer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return peers, err
|
return peers, err
|
||||||
}
|
}
|
||||||
|
@ -87,20 +91,22 @@ func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error
|
||||||
func GetPeersList(refnode *models.Node) ([]models.Node, error) {
|
func GetPeersList(refnode *models.Node) ([]models.Node, error) {
|
||||||
var peers []models.Node
|
var peers []models.Node
|
||||||
var err error
|
var err error
|
||||||
|
var isP2S bool
|
||||||
var networkName = refnode.Network
|
var networkName = refnode.Network
|
||||||
var excludeRelayed = refnode.IsRelay != "yes"
|
var excludeRelayed = refnode.IsRelay != "yes"
|
||||||
var relayedNodeAddr string
|
var relayedNodeAddr string
|
||||||
if refnode.IsRelayed == "yes" {
|
if refnode.IsRelayed == "yes" {
|
||||||
relayedNodeAddr = refnode.Address
|
relayedNodeAddr = refnode.Address
|
||||||
}
|
}
|
||||||
|
|
||||||
network, err := GetNetwork(networkName)
|
network, err := GetNetwork(networkName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return peers, err
|
return peers, err
|
||||||
} else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" {
|
} else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" {
|
||||||
return GetHubPeer(networkName), nil
|
isP2S = true
|
||||||
}
|
}
|
||||||
if relayedNodeAddr == "" {
|
if relayedNodeAddr == "" {
|
||||||
peers, err = GetNodePeers(networkName, excludeRelayed)
|
peers, err = GetNodePeers(networkName, excludeRelayed, isP2S)
|
||||||
} else {
|
} else {
|
||||||
var relayNode models.Node
|
var relayNode models.Node
|
||||||
relayNode, err = GetNodeRelay(networkName, relayedNodeAddr)
|
relayNode, err = GetNodeRelay(networkName, relayedNodeAddr)
|
||||||
|
@ -120,7 +126,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
|
||||||
} else {
|
} else {
|
||||||
peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...)
|
peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...)
|
||||||
}
|
}
|
||||||
nodepeers, err := GetNodePeers(networkName, false)
|
nodepeers, err := GetNodePeers(networkName, false, isP2S)
|
||||||
if err == nil && peerNode.UDPHolePunch == "yes" {
|
if err == nil && peerNode.UDPHolePunch == "yes" {
|
||||||
for _, nodepeer := range nodepeers {
|
for _, nodepeer := range nodepeers {
|
||||||
if nodepeer.Address == peerNode.Address {
|
if nodepeer.Address == peerNode.Address {
|
||||||
|
@ -129,10 +135,11 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if !isP2S || peerNode.IsHub == "yes" {
|
||||||
peers = append(peers, peerNode)
|
peers = append(peers, peerNode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return peers, err
|
return peers, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,6 +187,7 @@ func setPeerInfo(node *models.Node) models.Node {
|
||||||
peer.UDPHolePunch = node.UDPHolePunch
|
peer.UDPHolePunch = node.UDPHolePunch
|
||||||
peer.Address = node.Address
|
peer.Address = node.Address
|
||||||
peer.Address6 = node.Address6
|
peer.Address6 = node.Address6
|
||||||
|
peer.IsHub = node.IsHub
|
||||||
peer.EgressGatewayRanges = node.EgressGatewayRanges
|
peer.EgressGatewayRanges = node.EgressGatewayRanges
|
||||||
peer.IsEgressGateway = node.IsEgressGateway
|
peer.IsEgressGateway = node.IsEgressGateway
|
||||||
peer.IngressGatewayRange = node.IngressGatewayRange
|
peer.IngressGatewayRange = node.IngressGatewayRange
|
||||||
|
|
Loading…
Reference in a new issue