DXN ip (@ip "...", Jan, 2026-10-20): an IPv4 or IPv6 address, or a
prefix -- an address and a length. address holds the raw bytes, 4 or
16; prefix is the length, or nil for an address. A prefix's host bits
are zero (RFC 9164). In .dxnb it is CBOR's tag 52 or 54, raw bytes.
iex> {:ok, ip} = Dextrin.Ip.parse("2001:DB8:0:0::/32")
iex> Dextrin.Ip.format(ip)
"2001:db8::/32"
Summary
Functions
IPv4 in dotted decimal, IPv6 as RFC 5952 writes it, then /length for a prefix.
A value from raw address bytes and an optional prefix length, checked.
Parses an address, or address/length.
4 or 6.
Types
@type t() :: %Dextrin.Ip{address: binary(), prefix: nil | non_neg_integer()}
Functions
IPv4 in dotted decimal, IPv6 as RFC 5952 writes it, then /length for a prefix.
@spec new(binary(), nil | non_neg_integer()) :: {:ok, t()} | {:error, :invalid_ip}
A value from raw address bytes and an optional prefix length, checked.
Parses an address, or address/length.
@spec version(t()) :: 4 | 6
4 or 6.