Browse Source

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

fixed hub logic
dcarns 3 years ago
parent
commit
d086360695
2 changed files with 15 additions and 7 deletions
  1. 14 7
      logic/peers.go
  2. 1 0
      logic/util.go

+ 14 - 7
logic/peers.go

@@ -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,7 +78,9 @@ func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error
 					}
 				}
 			}
-			peers = append(peers, peer)
+			if !isP2S || peer.IsHub == "yes" {
+				peers = append(peers, peer)
+			}
 		}
 	}
 
@@ -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,8 +135,9 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
 					}
 				}
 			}
-
-			peers = append(peers, peerNode)
+			if !isP2S || peerNode.IsHub == "yes" {
+				peers = append(peers, peerNode)
+			}
 		}
 	}
 	return peers, err

+ 1 - 0
logic/util.go

@@ -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