Pfx.sibling
You're seeing just the function
sibling
, go back to Pfx module for more information.
Specs
Returns another Pfx
at distance offset
.
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
# next in line
iex> sibling(%Pfx{bits: <<10, 11>>, maxlen: 32}, 1)
%Pfx{bits: <<10, 12>>, maxlen: 32}
# the last shall be the first
iex> sibling(%Pfx{bits: <<10, 11, 0>>, maxlen: 32}, 255)
%Pfx{bits: <<10, 11, 255>>, maxlen: 32}
iex> sibling(%Pfx{bits: <<10, 11, 0>>, maxlen: 32}, 256)
%Pfx{bits: <<10, 12, 0>>, maxlen: 32}
# from one end to another
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}
iex> sibling("0.0.0.0", -1)
"255.255.255.255"
iex> sibling("1.2.3.0/24", -1)
"1.2.2.0/24"
iex> sibling({{1, 2, 3, 0}, 24}, 256)
{{1, 3, 3, 0}, 24}