Browse Source

handle peer updates for autoassigned gw peer

abhishek9686 5 days ago
parent
commit
12d6f3b42b
3 changed files with 7 additions and 5 deletions
  1. 4 2
      logic/peers.go
  2. 3 0
      logic/relay.go
  3. 0 3
      models/structs.go

+ 4 - 2
logic/peers.go

@@ -343,7 +343,8 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
 				}
 			}
 			shouldCheckRelayed := true
-			if node.AutoAssignGateway && peer.IsGw && node.RelayedBy != peer.ID.String() {
+			if (node.AutoAssignGateway && peer.IsGw && node.RelayedBy != peer.ID.String()) ||
+				(peer.AutoAssignGateway && node.IsGw && peer.RelayedBy != node.ID.String()) {
 				shouldCheckRelayed = false
 			}
 			if shouldCheckRelayed {
@@ -397,7 +398,8 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
 					peerEndpoint = peerHost.EndpointIPv6
 				}
 			}
-			if node.IsRelay && peer.RelayedBy == node.ID.String() && peer.InternetGwID == "" && !peer.IsStatic {
+			if (node.IsRelay && peer.RelayedBy == node.ID.String() && peer.InternetGwID == "") ||
+				(peer.AutoAssignGateway && node.IsGw) && !peer.IsStatic {
 				// don't set endpoint on relayed peer
 				peerEndpoint = nil
 			}

+ 3 - 0
logic/relay.go

@@ -212,6 +212,9 @@ func RelayedAllowedIPs(peer, node *models.Node) []net.IPNet {
 		if err != nil {
 			continue
 		}
+		if relayedNode.AutoAssignGateway && node.IsGw {
+			continue
+		}
 		GetNodeEgressInfo(&relayedNode, eli, acls)
 		allowed := getRelayedAddresses(relayedNodeID)
 		if relayedNode.EgressDetails.IsEgressGateway {

+ 0 - 3
models/structs.go

@@ -272,9 +272,6 @@ type HostPull struct {
 	ReplacePeers      bool                  `json:"replace_peers"`
 }
 
-type DefaultGwInfo struct {
-}
-
 // NodeGet - struct for a single node get response
 type NodeGet struct {
 	Node         Node                 `json:"node" bson:"node" yaml:"node"`