mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-24 22:39:09 +02:00
on peer deleted cleanup
This commit is contained in:
@@ -1435,34 +1435,36 @@ func (b *NetworkMapBuilder) OnPeerDeleted(peerID string) error {
|
|||||||
delete(b.validatedPeers, peerID)
|
delete(b.validatedPeers, peerID)
|
||||||
|
|
||||||
routesToDelete := []route.ID{}
|
routesToDelete := []route.ID{}
|
||||||
for routeID, r := range account.Routes {
|
|
||||||
if r.Peer == deletedPeerKey || r.PeerID == peerID {
|
|
||||||
if len(r.PeerGroups) > 0 {
|
|
||||||
newPeerAssigned := false
|
|
||||||
for _, groupID := range r.PeerGroups {
|
|
||||||
if group := account.GetGroup(groupID); group != nil {
|
|
||||||
for _, candidatePeerID := range group.Peers {
|
|
||||||
if candidatePeerID != peerID {
|
|
||||||
if candidatePeer := account.GetPeer(candidatePeerID); candidatePeer != nil {
|
|
||||||
r.Peer = candidatePeer.Key
|
|
||||||
r.PeerID = candidatePeerID
|
|
||||||
newPeerAssigned = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if newPeerAssigned {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if !newPeerAssigned {
|
for routeID, r := range account.Routes {
|
||||||
routesToDelete = append(routesToDelete, routeID)
|
if r.Peer != deletedPeerKey && r.PeerID != peerID {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if len(r.PeerGroups) == 0 {
|
||||||
|
routesToDelete = append(routesToDelete, routeID)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
newPeerAssigned := false
|
||||||
|
for _, groupID := range r.PeerGroups {
|
||||||
|
candidatePeerIDs := b.cache.groupToPeers[groupID]
|
||||||
|
for _, candidatePeerID := range candidatePeerIDs {
|
||||||
|
if candidatePeerID == peerID {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if candidatePeer := b.cache.globalPeers[candidatePeerID]; candidatePeer != nil {
|
||||||
|
r.Peer = candidatePeer.Key
|
||||||
|
r.PeerID = candidatePeerID
|
||||||
|
newPeerAssigned = true
|
||||||
|
break
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
routesToDelete = append(routesToDelete, routeID)
|
|
||||||
}
|
}
|
||||||
|
if newPeerAssigned {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !newPeerAssigned {
|
||||||
|
routesToDelete = append(routesToDelete, routeID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1536,23 +1538,22 @@ func (b *NetworkMapBuilder) findPeersAffectedByDeletedPeerACL(
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if slices.Contains(aclView.ConnectedPeerIDs, deletedPeerID) {
|
if !slices.Contains(aclView.ConnectedPeerIDs, deletedPeerID) {
|
||||||
if affected[peerID] == nil {
|
continue
|
||||||
affected[peerID] = &PeerDeletionUpdate{
|
}
|
||||||
RemovePeerID: deletedPeerID,
|
if affected[peerID] == nil {
|
||||||
PeerIP: peerIP,
|
affected[peerID] = &PeerDeletionUpdate{
|
||||||
}
|
RemovePeerID: deletedPeerID,
|
||||||
|
PeerIP: peerIP,
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, ruleID := range aclView.FirewallRuleIDs {
|
for _, ruleID := range aclView.FirewallRuleIDs {
|
||||||
if rule := b.cache.globalRules[ruleID]; rule != nil {
|
if rule := b.cache.globalRules[ruleID]; rule != nil && rule.PeerIP == peerIP {
|
||||||
if rule.PeerIP == peerIP {
|
affected[peerID].RemoveFirewallRuleIDs = append(
|
||||||
affected[peerID].RemoveFirewallRuleIDs = append(
|
affected[peerID].RemoveFirewallRuleIDs,
|
||||||
affected[peerID].RemoveFirewallRuleIDs,
|
ruleID,
|
||||||
ruleID,
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user