extclient info model changes

This commit is contained in:
Abhishek Kondur
2023-01-31 12:37:22 +04:00
parent 841a61a0b2
commit 36cf202ad5
2 changed files with 23 additions and 20 deletions

View File

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

View File

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