Browse Source

added ingress outbound to ext clients

0xdcarns 3 years ago
parent
commit
9b7631e6dc
1 changed files with 14 additions and 0 deletions
  1. 14 0
      logic/peers.go

+ 14 - 0
logic/peers.go

@@ -61,6 +61,9 @@ func GetNodePeers(networkName, nodeid string, excludeRelayed bool, isP2S bool) (
 			peer.EgressGatewayRanges = node.EgressGatewayRanges
 			peer.IsEgressGateway = node.IsEgressGateway
 		}
+
+		peer.IsIngressGateway = node.IsIngressGateway
+		isDualStack := node.IsDualStack == "yes"
 		allow := node.IsRelayed != "yes" || !excludeRelayed
 
 		if node.Network == networkName && node.IsPending != "yes" && allow {
@@ -89,6 +92,17 @@ func GetNodePeers(networkName, nodeid string, excludeRelayed bool, isP2S bool) (
 					}
 				}
 			}
+			if peer.IsIngressGateway == "yes" { // handle ingress stuff
+				if currentExtClients, err := GetExtPeersList(&node); err == nil {
+					for i := range currentExtClients {
+						peer.AllowedIPs = append(peer.AllowedIPs, currentExtClients[i].Address)
+						if isDualStack {
+							peer.AllowedIPs = append(peer.AllowedIPs, currentExtClients[i].Address6)
+						}
+					}
+				}
+			}
+
 			if (!isP2S || peer.IsHub == "yes") && currentNetworkACLs.IsAllowed(acls.AclID(nodeid), acls.AclID(node.ID)) {
 				peers = append(peers, peer)
 			}