Improve long-term IPv6 address picking

This commit is contained in:
DataHoarder 2023-04-24 17:11:28 +02:00
parent c24cb9109a
commit 22f06c48da
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk

View file

@ -44,6 +44,10 @@ func GetOutboundIPv6() ([]netip.Addr, error) {
continue
}
var mngTmpAddr []netip.Addr
var noPrefixRouteAddr []netip.Addr
var tmpAddr []netip.Addr
for _, a := range addrs {
if addr, ok := netip.AddrFromSlice(a.IP); ok && addr.Is6() && !addr.Is4In6() {
//Filter undesired addresses
@ -57,15 +61,29 @@ func GetOutboundIPv6() ([]netip.Addr, error) {
}
//Filter
if (a.Flags & FlagNoPrefixRoute) > 0 {
continue
}
if (a.Flags & FlagDeprecated) > 0 {
continue
}
addresses = append(addresses, netip.MustParseAddr(a.IP.String()))
if (a.Flags & FlagTemporary) > 0 {
continue
}
if (a.Flags & FlagManageTempAddress) > 0 {
mngTmpAddr = append(mngTmpAddr, netip.MustParseAddr(a.IP.String()))
}
if (a.Flags & FlagNoPrefixRoute) > 0 {
noPrefixRouteAddr = append(noPrefixRouteAddr, netip.MustParseAddr(a.IP.String()))
}
tmpAddr = append(tmpAddr, netip.MustParseAddr(a.IP.String()))
}
}
if len(mngTmpAddr) > 0 {
addresses = append(addresses, mngTmpAddr...)
} else if len(noPrefixRouteAddr) > 0 {
addresses = append(addresses, noPrefixRouteAddr...)
} else {
addresses = append(addresses, tmpAddr...)
}
}
}