Add DHCPv6 addresses into address picking

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

View file

@ -46,6 +46,7 @@ func GetOutboundIPv6() ([]netip.Addr, error) {
var mngTmpAddr []netip.Addr
var noPrefixRouteAddr []netip.Addr
var dhcpv6Addr []netip.Addr
var tmpAddr []netip.Addr
for _, a := range addrs {
@ -55,11 +56,6 @@ func GetOutboundIPv6() ([]netip.Addr, error) {
continue
}
//Filter generated privacy addresses directly
if onesCount, _ := a.Mask.Size(); onesCount == 128 {
continue
}
//Filter
if (a.Flags & FlagDeprecated) > 0 {
continue
@ -67,6 +63,13 @@ func GetOutboundIPv6() ([]netip.Addr, error) {
if (a.Flags & FlagTemporary) > 0 {
continue
}
//This is probably an address given by DHCPv6
if onesCount, _ := a.Mask.Size(); onesCount == 128 {
dhcpv6Addr = append(dhcpv6Addr, netip.MustParseAddr(a.IP.String()))
continue
}
if (a.Flags & FlagManageTempAddress) > 0 {
mngTmpAddr = append(mngTmpAddr, netip.MustParseAddr(a.IP.String()))
}
@ -81,6 +84,8 @@ func GetOutboundIPv6() ([]netip.Addr, error) {
addresses = append(addresses, mngTmpAddr...)
} else if len(noPrefixRouteAddr) > 0 {
addresses = append(addresses, noPrefixRouteAddr...)
} else if len(dhcpv6Addr) > 0 {
addresses = append(addresses, dhcpv6Addr...)
} else {
addresses = append(addresses, tmpAddr...)
}