Pfx.member
You're seeing just the function
member
, go back to Pfx module for more information.
Specs
Returns the nth
-member of a given pfx
.
A prefix represents a range of (possibly longer) prefixes which can be
seen as members of the prefix. So a prefix of n
-bits long represents:
- 1 prefix of
n
-bits long (i.e. itself), - 2 prefixes of
n+1
-bits long, - 4 prefixes of
n+2
-bits long - ..
- 2^w prefixes of
n+w
-bits long
where n+w
<= pfx.maxlen
.
Not specifying a width
assumes the maximum width available. If a width
is specified, the nth
-offset is added to the prefix as a number
width
-bits wide. This wraps around the available address space.
Examples
iex> member("10.10.10.0/24", 255)
"10.10.10.255"
# wraps around
iex> member("10.10.10.0/24", 256)
"10.10.10.0"
iex> member({{10, 10, 10, 0}, 24}, 255)
{{10, 10, 10, 255}, 32}
iex> member(%Pfx{bits: <<10, 10, 10>>, maxlen: 32}, 0)
%Pfx{bits: <<10, 10, 10, 0>>, maxlen: 32}
iex> member(%Pfx{bits: <<10, 10, 10>>, maxlen: 32}, 255)
%Pfx{bits: <<10, 10, 10, 255>>, maxlen: 32}
# wraps around
iex> member(%Pfx{bits: <<10, 10, 10>>, maxlen: 32}, 256)
%Pfx{bits: <<10, 10, 10, 0>>, maxlen: 32}
iex> member(%Pfx{bits: <<10, 10, 10>>, maxlen: 32}, -1)
%Pfx{bits: <<10, 10, 10, 255>>, maxlen: 32}
# a full prefix always returns itself
iex> member(%Pfx{bits: <<10, 10, 10, 10>>, maxlen: 32}, 0)
%Pfx{bits: <<10, 10, 10, 10>>, maxlen: 32}
iex> member(%Pfx{bits: <<10, 10, 10, 10>>, maxlen: 32}, 3)
%Pfx{bits: <<10, 10, 10, 10>>, maxlen: 32}
Specs
member(prefix(), integer(), pos_integer()) :: prefix()
Returns the nth
member in the set represented by pfx
, using width
bits.
Examples
iex> member("10.10.10.0/24", 1, 2)
"10.10.10.64/26"
iex> member("10.10.10.0/24", 2, 2)
"10.10.10.128/26"
iex> member({{10, 10, 10, 0}, 24}, 2, 2)
{{10, 10, 10, 128}, 26}
# the first member that is 2 bits longer
iex> member(%Pfx{bits: <<10, 10, 10>>, maxlen: 32}, 0, 2)
%Pfx{bits: <<10, 10, 10, 0::2>>, maxlen: 32}
# the second member that is 2 bits longer
iex> member(%Pfx{bits: <<10, 10, 10>>, maxlen: 32}, 1, 2)
%Pfx{bits: <<10, 10, 10, 1::2>>, maxlen: 32}