diff --git a/utils/network.go b/utils/network.go index 5e09756..f3f501d 100644 --- a/utils/network.go +++ b/utils/network.go @@ -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...) }