mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-13 08:34:44 +08:00
add ingress model to host peer update
This commit is contained in:
parent
f2d8cf4fb6
commit
56d26b5ea0
2 changed files with 30 additions and 3 deletions
|
@ -315,6 +315,7 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
|||
if !node.Connected || node.Action == models.NODE_DELETE || node.PendingDelete {
|
||||
continue
|
||||
}
|
||||
|
||||
hostPeerUpdate.Network[node.Network] = models.NetworkInfo{
|
||||
DNS: getPeerDNS(node.Network),
|
||||
}
|
||||
|
@ -323,6 +324,18 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
|||
log.Println("no network nodes")
|
||||
return models.HostPeerUpdate{}, err
|
||||
}
|
||||
var ingressInfo models.IngressInfo
|
||||
if node.IsIngressGateway {
|
||||
ingressInfo = models.IngressInfo{
|
||||
Network: node.Network,
|
||||
IngressGwAddr: net.IPNet{
|
||||
IP: net.ParseIP(node.PrimaryAddress()),
|
||||
Mask: net.CIDRMask(32, 32),
|
||||
},
|
||||
ExtPeers: make(map[string]wgtypes.PeerConfig),
|
||||
Peers: make(map[string]wgtypes.PeerConfig),
|
||||
}
|
||||
}
|
||||
for _, peer := range currentPeers {
|
||||
if peer.ID == node.ID {
|
||||
logger.Log(2, "peer update, skipping self")
|
||||
|
@ -384,7 +397,9 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
|||
allowedips = append(allowedips, getEgressIPs(&node, &peer)...)
|
||||
}
|
||||
peerConfig.AllowedIPs = allowedips
|
||||
|
||||
if node.IsIngressGateway {
|
||||
ingressInfo.Peers[peerConfig.PublicKey.String()] = peerConfig
|
||||
}
|
||||
if _, ok := hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()]; !ok {
|
||||
hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()] = make(map[string]models.IDandAddr)
|
||||
hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, peerConfig)
|
||||
|
@ -412,7 +427,10 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
|||
extPeers, extPeerIDAndAddrs, err := getExtPeers(&node)
|
||||
if err == nil {
|
||||
hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...)
|
||||
hostPeerUpdate.ExtPeers = extPeers
|
||||
for _, extPeer := range extPeers {
|
||||
ingressInfo.ExtPeers[extPeer.PublicKey.String()] = extPeer
|
||||
}
|
||||
hostPeerUpdate.IngressInfo = append(hostPeerUpdate.IngressInfo, ingressInfo)
|
||||
for _, extPeerIdAndAddr := range extPeerIDAndAddrs {
|
||||
hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID] = make(map[string]models.IDandAddr)
|
||||
hostPeerUpdate.PeerIDs[extPeerIdAndAddr.ID][extPeerIdAndAddr.ID] = models.IDandAddr{
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package models
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
proxy_models "github.com/gravitl/netclient/nmproxy/models"
|
||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
||||
)
|
||||
|
@ -25,7 +27,14 @@ type HostPeerUpdate struct {
|
|||
Peers []wgtypes.PeerConfig `json:"peers" bson:"peers" yaml:"peers"`
|
||||
PeerIDs HostPeerMap `json:"peerids" bson:"peerids" yaml:"peerids"`
|
||||
ProxyUpdate proxy_models.ProxyManagerPayload `json:"proxy_update" bson:"proxy_update" yaml:"proxy_update"`
|
||||
ExtPeers []wgtypes.PeerConfig `json:"ext_peers" bson:"ext_peers" yaml:"ext_peers"`
|
||||
IngressInfo []IngressInfo `json:"ingress_info" bson:"ext_peers" yaml:"ext_peers"`
|
||||
}
|
||||
|
||||
type IngressInfo struct {
|
||||
Network string
|
||||
IngressGwAddr net.IPNet
|
||||
ExtPeers map[string]wgtypes.PeerConfig
|
||||
Peers map[string]wgtypes.PeerConfig
|
||||
}
|
||||
|
||||
// NetworkInfo - struct for network info
|
||||
|
|
Loading…
Add table
Reference in a new issue