mirror of
https://github.com/netbirdio/netbird.git
synced 2026-10-25 13:59:08 +01:00
Merge remote-tracking branch 'origin/add-trace-update-logs' into add-trace-update-logs
This commit is contained in:
@@ -1043,8 +1043,8 @@ func (am *DefaultAccountManager) SyncPeer(ctx context.Context, sync types.PeerSy
|
|||||||
return nil, nil, nil, 0, err
|
return nil, nil, nil, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
metaDiffAffectsPosture := posture.AffectsPosture(&metaDiff, resPostureChecks)
|
metaDiffAffectsPosture := posture.AffectsPosture(ctx, &metaDiff, resPostureChecks)
|
||||||
if isStatusChanged || sync.UpdateAccountPeers || ipv6CapabilityChanged || metaDiffAffectsPosture || metaDiff.VersionChanged || metaDiff.Hostname {
|
if requiresPeerUpdate(ctx, isStatusChanged, sync.UpdateAccountPeers, ipv6CapabilityChanged, metaDiffAffectsPosture, metaDiff.VersionChanged, metaDiff.Hostname) {
|
||||||
changedPeerIDs := []string{peer.ID}
|
changedPeerIDs := []string{peer.ID}
|
||||||
affectedPeerIDs := am.syncPeerAffectedPeers(ctx, accountID, peer.ID, nmap, peerNotValid, metaDiffAffectsPosture)
|
affectedPeerIDs := am.syncPeerAffectedPeers(ctx, accountID, peer.ID, nmap, peerNotValid, metaDiffAffectsPosture)
|
||||||
if err = am.networkMapController.OnPeersUpdated(ctx, accountID, changedPeerIDs, affectedPeerIDs); err != nil {
|
if err = am.networkMapController.OnPeersUpdated(ctx, accountID, changedPeerIDs, affectedPeerIDs); err != nil {
|
||||||
@@ -1055,6 +1055,29 @@ func (am *DefaultAccountManager) SyncPeer(ctx context.Context, sync types.PeerSy
|
|||||||
return peer, nmap, resPostureChecks, dnsFwdPort, nil
|
return peer, nmap, resPostureChecks, dnsFwdPort, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func requiresPeerUpdate(ctx context.Context, isStatusChanged, updateAccountPeers, ipv6CapabilityChanged, metaDiffAffectsPosture, versionChanged, hostname bool) bool {
|
||||||
|
reason := ""
|
||||||
|
switch {
|
||||||
|
case isStatusChanged:
|
||||||
|
reason = "status changed"
|
||||||
|
case updateAccountPeers:
|
||||||
|
reason = "update account peers"
|
||||||
|
case ipv6CapabilityChanged:
|
||||||
|
reason = "ipv6 capability changed"
|
||||||
|
case metaDiffAffectsPosture:
|
||||||
|
reason = "meta diff affects posture"
|
||||||
|
case versionChanged:
|
||||||
|
reason = "version changed"
|
||||||
|
case hostname:
|
||||||
|
reason = "hostname changed"
|
||||||
|
default:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
log.WithContext(ctx).Tracef("peer update required: %s", reason)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// syncPeerAffectedPeers resolves the peers affected by a SyncPeer change. The
|
// syncPeerAffectedPeers resolves the peers affected by a SyncPeer change. The
|
||||||
// peer's own validated network map is bidirectional for policy and routing
|
// peer's own validated network map is bidirectional for policy and routing
|
||||||
// reachability, so when the peer stays valid and no source-posture gate is in
|
// reachability, so when the peer stays valid and no source-posture gate is in
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
|
|
||||||
"github.com/hashicorp/go-version"
|
"github.com/hashicorp/go-version"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
nbpeer "github.com/netbirdio/netbird/management/server/peer"
|
nbpeer "github.com/netbirdio/netbird/management/server/peer"
|
||||||
"github.com/netbirdio/netbird/shared/management/http/api"
|
"github.com/netbirdio/netbird/shared/management/http/api"
|
||||||
@@ -56,29 +57,35 @@ type Checks struct {
|
|||||||
// alter the outcome of any of the given posture checks. It maps each check kind to
|
// alter the outcome of any of the given posture checks. It maps each check kind to
|
||||||
// the metadata fields it inspects, so an unrelated change (e.g. a hostname update)
|
// the metadata fields it inspects, so an unrelated change (e.g. a hostname update)
|
||||||
// does not force a posture re-evaluation.
|
// does not force a posture re-evaluation.
|
||||||
func AffectsPosture(diff *nbpeer.MetaDiff, checks []*Checks) bool {
|
func AffectsPosture(ctx context.Context, diff *nbpeer.MetaDiff, checks []*Checks) bool {
|
||||||
if diff == nil {
|
if diff == nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
for _, c := range checks {
|
for _, c := range checks {
|
||||||
if c.Checks.ProcessCheck != nil && diff.Files {
|
if c.Checks.ProcessCheck != nil && diff.Files {
|
||||||
|
log.WithContext(ctx).Tracef("posture check %s is affected by files change", c.Name)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if c.Checks.OSVersionCheck != nil && (diff.OSVersion || diff.OS || diff.KernelVersion) {
|
if c.Checks.OSVersionCheck != nil && (diff.OSVersion || diff.OS || diff.KernelVersion) {
|
||||||
|
log.WithContext(ctx).Tracef("posture check %s is affected by OS version check", c.Name)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if c.Checks.NBVersionCheck != nil && diff.WtVersion {
|
if c.Checks.NBVersionCheck != nil && diff.WtVersion {
|
||||||
|
log.WithContext(ctx).Tracef("posture check %s is affected by NB version change", c.Name)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if c.Checks.GeoLocationCheck != nil && diff.LocationChanged {
|
if c.Checks.GeoLocationCheck != nil && diff.LocationChanged {
|
||||||
|
log.WithContext(ctx).Tracef("posture check %s is affected by location change", c.Name)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if c.Checks.PeerNetworkRangeCheck != nil && (diff.NetworkAddresses || diff.LocationChanged) {
|
if c.Checks.PeerNetworkRangeCheck != nil && (diff.NetworkAddresses || diff.LocationChanged) {
|
||||||
if diff.LocationChanged {
|
if diff.LocationChanged {
|
||||||
|
log.WithContext(ctx).Tracef("posture check %s is affected by location change", c.Name)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
for _, r := range c.Checks.PeerNetworkRangeCheck.Ranges {
|
for _, r := range c.Checks.PeerNetworkRangeCheck.Ranges {
|
||||||
if r.Addr().IsPrivate() {
|
if r.Addr().IsPrivate() {
|
||||||
|
log.WithContext(ctx).Tracef("posture check %s is affected by network address change", c.Name)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user