Pārlūkot izejas kodu

add inet gw info to node from egress list

abhishek9686 4 mēneši atpakaļ
vecāks
revīzija
c9db0a5131
2 mainītis faili ar 31 papildinājumiem un 1 dzēšanām
  1. 29 0
      logic/egress.go
  2. 2 1
      logic/peers.go

+ 29 - 0
logic/egress.go

@@ -62,6 +62,35 @@ func GetInetClientsFromAclPolicies(node *models.Node) (inetClientIDs []string) {
 	return
 }
 
+func IsNodeUsingInternetGw(node *models.Node) {
+	acls, _ := ListAclsByNetwork(models.NetworkID(node.Network))
+	for _, acl := range acls {
+		srcVal := convAclTagToValueMap(acl.Src)
+		for _, dstI := range acl.Dst {
+			if dstI.ID == models.EgressRange && dstI.Value == "*" {
+				if _, ok := srcVal[node.ID.String()]; ok {
+					for _, dstI := range acl.Dst {
+						if dstI.ID == models.NodeID {
+							node.InternetGwID = dstI.Value
+							return
+						}
+					}
+				}
+				for tagID := range node.Tags {
+					if _, ok := srcVal[tagID.String()]; ok {
+						for _, dstI := range acl.Dst {
+							if dstI.ID == models.NodeID {
+								node.InternetGwID = dstI.Value
+								return
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
+
 func GetNodeEgressInfo(targetNode *models.Node) {
 	eli, _ := (&models.Egress{Network: targetNode.Network}).ListByNetwork()
 	req := models.EgressGatewayRequest{

+ 2 - 1
logic/peers.go

@@ -199,7 +199,7 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
 		}
 		GetNodeEgressInfo(&node)
 		// set inet Info
-
+		IsNodeUsingInternetGw(&node)
 		hostPeerUpdate = SetDefaultGw(node, hostPeerUpdate)
 		if !hostPeerUpdate.IsInternetGw {
 			hostPeerUpdate.IsInternetGw = IsInternetGw(node)
@@ -251,6 +251,7 @@ func GetPeerUpdateForHost(network string, host *models.Host, allNodes []models.N
 				ReplaceAllowedIPs:           true,
 			}
 			GetNodeEgressInfo(&peer)
+			IsNodeUsingInternetGw(&peer)
 			_, isFailOverPeer := node.FailOverPeers[peer.ID.String()]
 			if peer.IsEgressGateway {
 				peerKey := peerHost.PublicKey.String()