select nmap based on peer version

This commit is contained in:
crn4
2025-12-04 12:24:51 +01:00
parent e184a43e8a
commit 942abeca0c
2 changed files with 34 additions and 0 deletions

View File

@@ -36,6 +36,10 @@ import (
"github.com/netbirdio/netbird/util"
)
const (
compactNetworkMapMinVersion = "v0.61.0" // TODO change to real version
)
type Controller struct {
repo Repository
metrics *metrics
@@ -478,6 +482,12 @@ func (c *Controller) getPeerNetworkMapExp(
Network: &types.Network{},
}
}
peer := account.GetPeer(peerId)
if peer != nil && supportsCompactNetworkMap(peer) {
return account.GetPeerNetworkMapCompactExp(ctx, peerId, customZone, validatedPeers, metrics)
}
return account.GetPeerNetworkMapExp(ctx, peerId, customZone, validatedPeers, metrics)
}
@@ -618,6 +628,19 @@ func (c *Controller) StartWarmup(ctx context.Context) {
}
func supportsCompactNetworkMap(peer *nbpeer.Peer) bool {
if peer.Meta.WtVersion == "development" || peer.Meta.WtVersion == "dev" {
return true
}
peerVersion := semver.Canonical("v" + peer.Meta.WtVersion)
if peerVersion == "" {
return false
}
return semver.Compare(peerVersion, compactNetworkMapMinVersion) >= 0
}
// computeForwarderPort checks if all peers in the account have updated to a specific version or newer.
// If all peers have the required version, it returns the new well-known port (22054), otherwise returns 0.
func computeForwarderPort(peers []*nbpeer.Peer, requiredVersion string) int64 {