diff --git a/logic/peers.go b/logic/peers.go index 7775d3f8..a4f861bb 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -429,8 +429,10 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) { } } + var extPeers []wgtypes.PeerConfig + var extPeerIDAndAddrs []models.IDandAddr if node.IsIngressGateway { - extPeers, extPeerIDAndAddrs, err := getExtPeers(&node) + extPeers, extPeerIDAndAddrs, err = getExtPeers(&node) if err == nil { hostPeerUpdate.Peers = append(hostPeerUpdate.Peers, extPeers...) for _, extPeerIdAndAddr := range extPeerIDAndAddrs { @@ -461,8 +463,25 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) { } } if node.IsEgressGateway { + if node.IsIngressGateway { + for _, extPeerIdAndAddr := range extPeerIDAndAddrs { + nodePeerMap[extPeerIdAndAddr.ID] = models.PeerRouteInfo{ + PeerAddr: net.IPNet{ + IP: net.ParseIP(extPeerIdAndAddr.Address), + Mask: getCIDRMaskFromAddr(extPeerIdAndAddr.Address), + }, + PeerKey: extPeerIdAndAddr.ID, + Allow: true, + } + } + + } hostPeerUpdate.EgressInfo[node.ID.String()] = models.EgressInfo{ - EgressID: node.ID.String(), + EgressID: node.ID.String(), + EgressGwAddr: net.IPNet{ + IP: net.ParseIP(node.PrimaryAddress()), + Mask: getCIDRMaskFromAddr(node.PrimaryAddress()), + }, GwPeers: nodePeerMap, EgressGWCfg: node.EgressGatewayRequest, }