mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-12 17:59:06 +02:00
28 lines
868 B
Go
28 lines
868 B
Go
package notifier
|
|
|
|
import (
|
|
"slices"
|
|
"sort"
|
|
|
|
"github.com/netbirdio/netbird/route"
|
|
)
|
|
|
|
// routePrefixes returns the distinct prefixes a route set covers, sorted.
|
|
// Duplicates are dropped deliberately: an HA group hands us one route per
|
|
// peer serving the same prefix, and the platform is given the prefix, not the
|
|
// candidates. Counting them would report a change every time a peer joins or
|
|
// leaves a group, and on Android each report renews the TUN.
|
|
func routePrefixes(routes []*route.Route) []string {
|
|
nets := make([]string, 0, len(routes))
|
|
for _, r := range routes {
|
|
nets = append(nets, r.NetString())
|
|
}
|
|
sort.Strings(nets)
|
|
return slices.Compact(nets)
|
|
}
|
|
|
|
// hasRouteDiff reports whether the prefixes the two route sets cover differ.
|
|
func hasRouteDiff(a []*route.Route, b []*route.Route) bool {
|
|
return !slices.Equal(routePrefixes(a), routePrefixes(b))
|
|
}
|