common

package module
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 19, 2025 License: GPL-2.0 Imports: 9 Imported by: 7

README

Common Utilities for IPREF

This package contains common utilities between the various IPREF Go packages (gw, dns-agent, etc.).

Documentation

Index

Constants

View Source
const (
	V1_SIG      = 0x11 // v1 signature
	V1_HDR_LEN  = 8
	V1_MARK_LEN = 4 + 4 // oid + mark
	// v1 header offsets
	V1_VER    = 0 // must be 0x11
	V1_CMD    = 1
	V1_PKTID  = 2
	V1_PKTLEN = 6
	// v1 mark offsets
	V1_OID  = 0
	V1_MARK = 4
	// v1 host data offsets
	V1_HOST_DATA_BATCHID = 0
	V1_HOST_DATA_COUNT   = 0
	V1_HOST_DATA_HASH    = 4
	V1_HOST_DATA_SOURCE  = 12
	// v1 save dnssource offsets
	V1_DNSSOURCE_MARK   = 4
	V1_DNSSOURCE_XMARK  = 4
	V1_DNSSOURCE_HASH   = 8
	V1_DNSSOURCE_SOURCE = 16
)
View Source
const (
	V1_NOOP           = 0
	V1_SET_AREC       = 1
	V1_SET_MARK       = 2
	V1_GET_REF        = 4
	V1_GET_EA         = 6
	V1_MC_GET_EA      = 7
	V1_SAVE_OID       = 8
	V1_SAVE_TIME_BASE = 9
	V1_RECOVER_EA     = 10
	V1_RECOVER_REF    = 11

	V1_MC_HOST_DATA      = 14
	V1_MC_HOST_DATA_HASH = 15
	V1_SAVE_DNSSOURCE    = 16
)
View Source
const (
	V1_DATA = 0x00
	V1_REQ  = 0x40
	V1_ACK  = 0x80
	V1_NACK = 0xC0
)
View Source
const (

	//V1_TYPE_NONE   = 0
	//V1_TYPE_AREC   = 1
	//V1_TYPE_IPV4   = 3
	V1_TYPE_STRING = 4
)

Variables

View Source
var UINT128_0 = Uint128FromUint64(0)
View Source
var UINT128_1 = Uint128FromUint64(1)
View Source
var UINT128_2_127 = UINT128_1.Lsh(127)
View Source
var UINT128_MAX = UINT128_0.Sub(UINT128_1)

Functions

func IPLenToVer added in v1.2.0

func IPLenToVer(l int) int

func IPPrefixesContain added in v1.4.0

func IPPrefixesContain(prefixes []IPPrefix, ip IP) bool

func IPVerToLen added in v1.2.0

func IPVerToLen(ver int) int

func RefPrefixesContain added in v1.4.0

func RefPrefixesContain(prefixes []RefPrefix, ref Ref) bool

Types

type AddrRec added in v1.1.0

type AddrRec struct {
	EA  IP
	IP  IP
	GW  IP
	Ref Ref
}

type IP

type IP netip.Addr // IPv4 or IPv6 address; Zone() must be ""

func IPBits

func IPBits(l, n int) IP

func IPFromSlice

func IPFromSlice(ip []byte) IP

The slice must be 4 or 16 bytes

func IPFromUint128 added in v1.4.0

func IPFromUint128(ip Uint128) IP

func IPFromUint32

func IPFromUint32(ip uint32) IP

func IPFromUnixSockaddr added in v1.4.0

func IPFromUnixSockaddr(addr unix.Sockaddr) IP

func IPNum

func IPNum(l int, n uint32) IP

func IPZero added in v1.2.0

func IPZero(l int) IP

func MustParseIP

func MustParseIP(s string) IP

func ParseIP

func ParseIP(s string) (IP, error)

func (IP) Add

func (a IP) Add(b IP) IP

func (IP) And

func (a IP) And(b IP) IP

func (IP) As4In6 added in v1.4.0

func (ip IP) As4In6() IP

func (IP) AsSlice

func (ip IP) AsSlice() []byte

func (IP) AsSlice4

func (ip IP) AsSlice4() []byte

func (IP) AsSlice6

func (ip IP) AsSlice6() []byte

func (IP) AsUint128 added in v1.4.0

func (ip IP) AsUint128() Uint128

func (IP) AsUint128Cast added in v1.4.0

func (ip IP) AsUint128Cast() Uint128

func (IP) AsUint32

func (ip IP) AsUint32() uint32

func (IP) AsUnixSockaddr added in v1.4.0

func (ip IP) AsUnixSockaddr() unix.Sockaddr

func (IP) ByteFromEnd

func (ip IP) ByteFromEnd(i int) byte

func (IP) Compare added in v1.2.0

func (a IP) Compare(b IP) int

func (IP) Is4

func (ip IP) Is4() bool

func (IP) Is4In6 added in v1.4.0

func (ip IP) Is4In6() bool

func (IP) Is6

func (ip IP) Is6() bool

func (IP) IsGlobalUnicast added in v1.4.0

func (ip IP) IsGlobalUnicast() bool

func (IP) IsLinkLocal

func (ip IP) IsLinkLocal() bool

func (IP) IsZero

func (ip IP) IsZero() bool

Tests if the IP is equal to the zero-initialized value. This is distinct from the zero IP address (eg. 0.0.0.0 or ::).

func (IP) IsZeroAddr

func (ip IP) IsZeroAddr() bool

func (IP) Len

func (ip IP) Len() int

func (IP) Not

func (a IP) Not() IP

func (IP) Or

func (a IP) Or(b IP) IP

func (IP) String

func (ip IP) String() string

func (IP) Un4In6 added in v1.4.0

func (ip IP) Un4In6() IP

func (IP) Ver

func (ip IP) Ver() int

func (IP) XOr

func (a IP) XOr(b IP) IP

type IPPrefix added in v1.4.0

type IPPrefix netip.Prefix // .Addr().Zone() must be "", and must be .Masked()

func IPPrefixAllVer added in v1.4.0

func IPPrefixAllVer(ipver int) IPPrefix

func IPPrefixComplete added in v1.4.0

func IPPrefixComplete(ipver int) IPPrefix

func IPPrefixFrom added in v1.4.0

func IPPrefixFrom(ip IP, bits int) IPPrefix

func IPPrefixSingle added in v1.4.0

func IPPrefixSingle(ip IP) IPPrefix

func MustParseIPPrefix added in v1.4.0

func MustParseIPPrefix(s string) IPPrefix

func ParseIPPrefix added in v1.4.0

func ParseIPPrefix(s string) (IPPrefix, error)

func (IPPrefix) Addr added in v1.4.0

func (p IPPrefix) Addr() IP

func (IPPrefix) Bits added in v1.4.0

func (p IPPrefix) Bits() int

func (IPPrefix) Contains added in v1.4.0

func (p IPPrefix) Contains(ip IP) bool

func (IPPrefix) SizeBits added in v1.4.0

func (p IPPrefix) SizeBits() int

func (IPPrefix) String added in v1.4.0

func (p IPPrefix) String() string

func (IPPrefix) Subnets added in v1.4.0

func (a IPPrefix) Subnets(l int) []IPPrefix

Returns the 2^l subnets of prefix length 'a.Bits() + l' within a, in order. If l is invalid, then nil is returned.

type IpRef added in v1.1.0

type IpRef struct {
	IP  IP
	Ref Ref
}

func MustParseIpRef added in v1.3.0

func MustParseIpRef(str string) IpRef

func ParseIpRef added in v1.3.0

func ParseIpRef(str string) (ipref IpRef, err error)

func (IpRef) String added in v1.1.0

func (ipref IpRef) String() string

type Ref added in v1.3.0

type Ref Uint128

The zero ref is Ref{}

func MustParseRef added in v1.3.0

func MustParseRef(str string) Ref

func ParseRef added in v1.3.0

func ParseRef(str string) (Ref, error)

func ParseRefInPrefix added in v1.4.0

func ParseRefInPrefix(str string) (Ref, error)

func RefFromBytesBE added in v1.3.0

func RefFromBytesBE(src []byte) Ref

func (Ref) AsSliceBE added in v1.3.0

func (ref Ref) AsSliceBE() []byte

func (Ref) IsZero added in v1.3.0

func (ref Ref) IsZero() bool

func (Ref) String added in v1.3.0

func (ref Ref) String() string

func (Ref) StringInPrefix added in v1.4.0

func (ref Ref) StringInPrefix() string

type RefPrefix added in v1.4.0

type RefPrefix struct {
	// contains filtered or unexported fields
}

The zero value is the prefix which contains all refs

func MustParseRefPrefix added in v1.4.0

func MustParseRefPrefix(s string) RefPrefix

func ParseRefPrefix added in v1.4.0

func ParseRefPrefix(s string) (RefPrefix, error)

func RefPrefixComplete added in v1.4.0

func RefPrefixComplete() RefPrefix

func RefPrefixFrom added in v1.4.0

func RefPrefixFrom(ref Ref, bits int) RefPrefix

func RefPrefixSingle added in v1.4.0

func RefPrefixSingle(ref Ref) RefPrefix

func (RefPrefix) Bits added in v1.4.0

func (p RefPrefix) Bits() int

func (RefPrefix) Contains added in v1.4.0

func (p RefPrefix) Contains(ref Ref) bool

func (RefPrefix) Ref added in v1.4.0

func (p RefPrefix) Ref() Ref

func (RefPrefix) RefUint128 added in v1.4.0

func (p RefPrefix) RefUint128() Uint128

func (RefPrefix) SizeBits added in v1.4.0

func (p RefPrefix) SizeBits() int

func (RefPrefix) String added in v1.4.0

func (p RefPrefix) String() string

type Uint128 added in v1.3.0

type Uint128 struct {
	L, H uint64
}

func MustParseUint128 added in v1.3.0

func MustParseUint128(s string, base int) Uint128

func ParseUint128 added in v1.3.0

func ParseUint128(s string, base int) (Uint128, bool)

func Uint128FromBig added in v1.3.0

func Uint128FromBig(i *big.Int) (Uint128, bool)

func Uint128FromBytesBE added in v1.3.0

func Uint128FromBytesBE(src []byte) Uint128

func Uint128FromBytesLE added in v1.3.0

func Uint128FromBytesLE(src []byte) Uint128

func Uint128FromUint16 added in v1.3.0

func Uint128FromUint16(x uint16) Uint128

func Uint128FromUint32 added in v1.3.0

func Uint128FromUint32(x uint32) Uint128

func Uint128FromUint64 added in v1.3.0

func Uint128FromUint64(x uint64) Uint128

func Uint128FromUint8 added in v1.3.0

func Uint128FromUint8(x uint8) Uint128

func (Uint128) Add added in v1.3.0

func (x Uint128) Add(y Uint128) (z Uint128)

func (Uint128) AddCarry added in v1.3.0

func (x Uint128) AddCarry(y Uint128, cin uint64) (z Uint128, cout uint64)

func (Uint128) And added in v1.3.0

func (x Uint128) And(y Uint128) Uint128

func (Uint128) AndNot added in v1.3.0

func (x Uint128) AndNot(y Uint128) Uint128

func (Uint128) AsBytesBE added in v1.3.0

func (x Uint128) AsBytesBE() (dst [16]byte)

func (Uint128) AsBytesLE added in v1.3.0

func (x Uint128) AsBytesLE() (dst [16]byte)

func (Uint128) AsSliceBE added in v1.3.0

func (x Uint128) AsSliceBE() []byte

func (Uint128) AsSliceLE added in v1.3.0

func (x Uint128) AsSliceLE() []byte

func (Uint128) Big added in v1.3.0

func (x Uint128) Big() *big.Int

func (Uint128) Bit added in v1.3.0

func (x Uint128) Bit(n int) uint

func (Uint128) BitLen added in v1.3.0

func (x Uint128) BitLen() int

func (Uint128) Cmp added in v1.3.0

func (x Uint128) Cmp(y Uint128) int

func (Uint128) Compl added in v1.3.0

func (x Uint128) Compl() Uint128

func (Uint128) Format added in v1.3.0

func (x Uint128) Format(base int) string

func (Uint128) FormatHex added in v1.3.0

func (x Uint128) FormatHex() string

func (Uint128) Int added in v1.3.0

func (x Uint128) Int() int

func (Uint128) IntCheck added in v1.3.0

func (x Uint128) IntCheck() (int, bool)

func (Uint128) IsZero added in v1.3.0

func (x Uint128) IsZero() bool

func (Uint128) LeadingZeros added in v1.3.0

func (x Uint128) LeadingZeros() int

func (Uint128) Lsh added in v1.3.0

func (x Uint128) Lsh(n uint) Uint128

func (Uint128) Mul added in v1.3.0

func (x Uint128) Mul(y Uint128) (z Uint128)

func (Uint128) Or added in v1.3.0

func (x Uint128) Or(y Uint128) Uint128

func (Uint128) PutBytesBE added in v1.3.0

func (x Uint128) PutBytesBE(dst []byte)

func (Uint128) PutBytesLE added in v1.3.0

func (x Uint128) PutBytesLE(dst []byte)

func (Uint128) Rsh added in v1.3.0

func (x Uint128) Rsh(n uint) Uint128

func (Uint128) String added in v1.3.0

func (x Uint128) String() string

func (Uint128) Sub added in v1.3.0

func (x Uint128) Sub(y Uint128) (z Uint128)

func (Uint128) SubBorrow added in v1.3.0

func (x Uint128) SubBorrow(y Uint128, bin uint64) (z Uint128, bout uint64)

func (Uint128) TrailingZeros added in v1.3.0

func (x Uint128) TrailingZeros() int

func (Uint128) Uint16 added in v1.3.0

func (x Uint128) Uint16() uint16

func (Uint128) Uint16Check added in v1.3.0

func (x Uint128) Uint16Check() (uint16, bool)

func (Uint128) Uint32 added in v1.3.0

func (x Uint128) Uint32() uint32

func (Uint128) Uint32Check added in v1.3.0

func (x Uint128) Uint32Check() (uint32, bool)

func (Uint128) Uint64 added in v1.3.0

func (x Uint128) Uint64() uint64

func (Uint128) Uint64Check added in v1.3.0

func (x Uint128) Uint64Check() (uint64, bool)

func (Uint128) Uint8 added in v1.3.0

func (x Uint128) Uint8() uint8

func (Uint128) Uint8Check added in v1.3.0

func (x Uint128) Uint8Check() (uint8, bool)

func (Uint128) Xor added in v1.3.0

func (x Uint128) Xor(y Uint128) Uint128

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL