mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-18 16:26:38 +00:00
Merge branch 'client-ipv6-iface' into client-ipv6-dns
# Conflicts: # client/iface/wgaddr/address.go
This commit is contained in:
4
.github/workflows/wasm-build-validation.yml
vendored
4
.github/workflows/wasm-build-validation.yml
vendored
@@ -61,8 +61,8 @@ jobs:
|
|||||||
|
|
||||||
echo "Size: ${SIZE} bytes (${SIZE_MB} MB)"
|
echo "Size: ${SIZE} bytes (${SIZE_MB} MB)"
|
||||||
|
|
||||||
if [ ${SIZE} -gt 57671680 ]; then
|
if [ ${SIZE} -gt 58720256 ]; then
|
||||||
echo "Wasm binary size (${SIZE_MB}MB) exceeds 55MB limit!"
|
echo "Wasm binary size (${SIZE_MB}MB) exceeds 56MB limit!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package wgaddr
|
package wgaddr
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"net/netip"
|
"net/netip"
|
||||||
|
|
||||||
|
"github.com/netbirdio/netbird/shared/netiputil"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Address WireGuard parsed address
|
// Address WireGuard parsed address
|
||||||
@@ -56,9 +59,29 @@ func (addr Address) IPv6Prefix() netip.Prefix {
|
|||||||
return netip.PrefixFrom(addr.IPv6, addr.IPv6Net.Bits())
|
return netip.PrefixFrom(addr.IPv6, addr.IPv6Net.Bits())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetIPv6FromCompact decodes a compact prefix (5 or 17 bytes) and sets the IPv6 fields.
|
||||||
|
// Returns an error if the bytes are invalid. A nil or empty input is a no-op.
|
||||||
|
//
|
||||||
|
//nolint:recvcheck
|
||||||
|
func (addr *Address) SetIPv6FromCompact(raw []byte) error {
|
||||||
|
if len(raw) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
prefix, err := netiputil.DecodePrefix(raw)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("decode v6 overlay address: %w", err)
|
||||||
|
}
|
||||||
|
if !prefix.Addr().Is6() {
|
||||||
|
return fmt.Errorf("expected IPv6 address, got %s", prefix.Addr())
|
||||||
|
}
|
||||||
|
addr.IPv6 = prefix.Addr()
|
||||||
|
addr.IPv6Net = prefix.Masked()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// ClearIPv6 removes the IPv6 overlay address, leaving only v4.
|
// ClearIPv6 removes the IPv6 overlay address, leaving only v4.
|
||||||
//
|
//
|
||||||
//nolint:recvcheck // ClearIPv6 is the only mutating method on this otherwise value-type struct.
|
//nolint:recvcheck
|
||||||
func (addr *Address) ClearIPv6() {
|
func (addr *Address) ClearIPv6() {
|
||||||
addr.IPv6 = netip.Addr{}
|
addr.IPv6 = netip.Addr{}
|
||||||
addr.IPv6Net = netip.Prefix{}
|
addr.IPv6Net = netip.Prefix{}
|
||||||
|
|||||||
Reference in New Issue
Block a user