Merge pull request #816 from gravitl/feature_v0.11.0_hublogic

fixed hub logic
This commit is contained in:
dcarns 2022-02-21 11:16:05 -05:00 committed by GitHub
commit d086360695
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 7 deletions

View file

@ -15,6 +15,7 @@ import (
)
// GetHubPeer - in HubAndSpoke networks, if not the hub, return the hub
/*
func GetHubPeer(networkName string) []models.Node {
var hubpeer = make([]models.Node, 0)
servernodes, err := GetNetworkNodes(networkName)
@ -28,9 +29,10 @@ func GetHubPeer(networkName string) []models.Node {
}
return hubpeer
}
*/
// 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 networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName)
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)
}
}
}
return peers, err
}
@ -87,20 +91,22 @@ func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error
func GetPeersList(refnode *models.Node) ([]models.Node, error) {
var peers []models.Node
var err error
var isP2S bool
var networkName = refnode.Network
var excludeRelayed = refnode.IsRelay != "yes"
var relayedNodeAddr string
if refnode.IsRelayed == "yes" {
relayedNodeAddr = refnode.Address
}
network, err := GetNetwork(networkName)
if err != nil {
return peers, err
} else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" {
return GetHubPeer(networkName), nil
isP2S = true
}
if relayedNodeAddr == "" {
peers, err = GetNodePeers(networkName, excludeRelayed)
peers, err = GetNodePeers(networkName, excludeRelayed, isP2S)
} else {
var relayNode models.Node
relayNode, err = GetNodeRelay(networkName, relayedNodeAddr)
@ -120,7 +126,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
} else {
peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...)
}
nodepeers, err := GetNodePeers(networkName, false)
nodepeers, err := GetNodePeers(networkName, false, isP2S)
if err == nil && peerNode.UDPHolePunch == "yes" {
for _, nodepeer := range nodepeers {
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)
}
}
}
return peers, err
}

View file

@ -187,6 +187,7 @@ func setPeerInfo(node *models.Node) models.Node {
peer.UDPHolePunch = node.UDPHolePunch
peer.Address = node.Address
peer.Address6 = node.Address6
peer.IsHub = node.IsHub
peer.EgressGatewayRanges = node.EgressGatewayRanges
peer.IsEgressGateway = node.IsEgressGateway
peer.IngressGatewayRange = node.IngressGatewayRange