Pfx.sibling
You're seeing just the function
sibling
, go back to Pfx module for more information.
Specs
Returns another Pfx
at distance offset
from given pfx
.
This basically increases or decreases the number represented by the
pfx.bits
while keeping pfx.maxlen
the same.
Note that the length of pfx.bits
will not change and cycling through
all siblings will eventually wrap around.
Examples
iex> sibling("1.2.3.0/24", -1)
"1.2.2.0/24"
iex> sibling("0.0.0.0", -1)
"255.255.255.255"
iex> sibling({{1, 2, 3, 0}, 24}, 256)
{{1, 3, 3, 0}, 24}
iex> sibling(%Pfx{bits: <<10, 11>>, maxlen: 32}, 1)
%Pfx{bits: <<10, 12>>, maxlen: 32}
iex> sibling(%Pfx{bits: <<10, 11, 0>>, maxlen: 32}, 255)
%Pfx{bits: <<10, 11, 255>>, maxlen: 32}
# wraps around
iex> sibling(%Pfx{bits: <<10, 11, 0>>, maxlen: 32}, 256)
%Pfx{bits: <<10, 12, 0>>, maxlen: 32}
iex> new(<<0, 0, 0, 0>>, 32) |> sibling(-1)
%Pfx{bits: <<255, 255, 255, 255>>, maxlen: 32}
# zero bit-length stays zero bit-length
iex> sibling(%Pfx{bits: <<>>, maxlen: 0}, 1)
%Pfx{bits: <<>>, maxlen: 0}