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{}, ServerAddrs: []models.ServerAddr{},
IngressInfo: models.IngressInfo{ IngressInfo: models.IngressInfo{
IngressGwAddr: make(map[string]net.IPNet), IngressGwAddr: make(map[string]net.IPNet),
ExtPeers: make(map[string]wgtypes.PeerConfig), ExtPeers: make(map[string]models.ExtClientInfo),
Peers: make(map[string][]wgtypes.PeerConfig),
}, },
} }
logger.Log(1, "peer update for host ", host.ID.String()) 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") log.Println("no network nodes")
return models.HostPeerUpdate{}, err return models.HostPeerUpdate{}, err
} }
var extClientPeerMap map[string]models.PeerExtInfo
if node.IsIngressGateway {
extClientPeerMap = make(map[string]models.PeerExtInfo)
}
for _, peer := range currentPeers { for _, peer := range currentPeers {
if peer.ID == node.ID { if peer.ID == node.ID {
logger.Log(2, "peer update, skipping self") 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)...) allowedips = append(allowedips, getEgressIPs(&node, &peer)...)
} }
peerConfig.AllowedIPs = allowedips peerConfig.AllowedIPs = allowedips
if node.IsIngressGateway { extClientPeerMap[peerHost.PublicKey.String()] = models.PeerExtInfo{
if peers, ok := hostPeerUpdate.IngressInfo.Peers[peerHost.PublicKey.String()]; ok { PeerConfig: peerConfig,
peers = append(peers, peerConfig) Allow: true,
hostPeerUpdate.IngressInfo.Peers[peerHost.PublicKey.String()] = peers
} else {
hostPeerUpdate.IngressInfo.Peers[peerHost.PublicKey.String()] = []wgtypes.PeerConfig{peerConfig}
}
} }
if _, ok := hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()]; !ok { if _, ok := hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()]; !ok {
hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()] = make(map[string]models.IDandAddr) 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) extPeers, extPeerIDAndAddrs, err := getExtPeers(&node)
if err == nil { if err == nil {
hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...) 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 { 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 { for _, extPeerIdAndAddr := range extPeerIDAndAddrs {
hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID] = make(map[string]models.IDandAddr) hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID] = make(map[string]models.IDandAddr)

View File

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