Browse Source

extclient info model changes

Abhishek Kondur 2 years ago
parent
commit
36cf202ad5
2 changed files with 23 additions and 20 deletions
  1. 12 15
      logic/peers.go
  2. 11 5
      models/mqtt.go

+ 12 - 15
logic/peers.go

@@ -306,8 +306,7 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 		ServerAddrs:   []models.ServerAddr{},
 		IngressInfo: models.IngressInfo{
 			IngressGwAddr: make(map[string]net.IPNet),
-			ExtPeers:      make(map[string]wgtypes.PeerConfig),
-			Peers:         make(map[string][]wgtypes.PeerConfig),
+			ExtPeers:      make(map[string]models.ExtClientInfo),
 		},
 	}
 	logger.Log(1, "peer update for host ", host.ID.String())
@@ -329,7 +328,10 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 			log.Println("no network nodes")
 			return models.HostPeerUpdate{}, err
 		}
-
+		var extClientPeerMap map[string]models.PeerExtInfo
+		if node.IsIngressGateway {
+			extClientPeerMap = make(map[string]models.PeerExtInfo)
+		}
 		for _, peer := range currentPeers {
 			if peer.ID == node.ID {
 				logger.Log(2, "peer update, skipping self")
@@ -391,13 +393,9 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 				allowedips = append(allowedips, getEgressIPs(&node, &peer)...)
 			}
 			peerConfig.AllowedIPs = allowedips
-			if node.IsIngressGateway {
-				if peers, ok := hostPeerUpdate.IngressInfo.Peers[peerHost.PublicKey.String()]; ok {
-					peers = append(peers, peerConfig)
-					hostPeerUpdate.IngressInfo.Peers[peerHost.PublicKey.String()] = peers
-				} else {
-					hostPeerUpdate.IngressInfo.Peers[peerHost.PublicKey.String()] = []wgtypes.PeerConfig{peerConfig}
-				}
+			extClientPeerMap[peerHost.PublicKey.String()] = models.PeerExtInfo{
+				PeerConfig: peerConfig,
+				Allow:      true,
 			}
 			if _, ok := hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()]; !ok {
 				hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()] = make(map[string]models.IDandAddr)
@@ -426,12 +424,11 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 			extPeers, extPeerIDAndAddrs, err := getExtPeers(&node)
 			if err == nil {
 				hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...)
-				hostPeerUpdate.IngressInfo.IngressGwAddr[node.Network] = net.IPNet{
-					IP:   net.ParseIP(node.PrimaryAddress()),
-					Mask: net.CIDRMask(32, 32),
-				}
 				for _, extPeer := range extPeers {
-					hostPeerUpdate.IngressInfo.ExtPeers[extPeer.PublicKey.String()] = extPeer
+					hostPeerUpdate.IngressInfo.ExtPeers[extPeer.PublicKey.String()] = models.ExtClientInfo{
+						ExtPeer: extPeer,
+						Peers:   extClientPeerMap,
+					}
 				}
 				for _, extPeerIdAndAddr := range extPeerIDAndAddrs {
 					hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID] = make(map[string]models.IDandAddr)

+ 11 - 5
models/mqtt.go

@@ -1,8 +1,6 @@
 package models
 
 import (
-	"net"
-
 	proxy_models "github.com/gravitl/netclient/nmproxy/models"
 	"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
 )
@@ -31,9 +29,17 @@ type HostPeerUpdate struct {
 }
 
 type IngressInfo struct {
-	IngressGwAddr map[string]net.IPNet
-	ExtPeers      map[string]wgtypes.PeerConfig
-	Peers         map[string][]wgtypes.PeerConfig
+	ExtPeers map[string]ExtClientInfo
+}
+
+type PeerExtInfo struct {
+	PeerConfig wgtypes.PeerConfig
+	Allow      bool
+}
+
+type ExtClientInfo struct {
+	ExtPeer wgtypes.PeerConfig
+	Peers   map[string]PeerExtInfo
 }
 
 // NetworkInfo - struct for network info