Pfx.teredo_decode
You're seeing just the function
teredo_decode
, go back to Pfx module for more information.
Specs
Returns a map with the teredo address components of pfx
or nil.
Returns nil if pfx
is not a
teredo address.
A teredo address consists of:
- the teredo service prefix of
2000:0::/32
- IPv4 address of the teredo server
- flags (16 bits) that document type of address and NAT
- Port (16 bits), the obfuscated "mapped UDP port" at the client
- IPv4 address (obfucated) of the teredo client.
More details in rfc4380.
Examples
# example from https://en.wikipedia.org/wiki/Teredo_tunneling#IPv6_addressing
iex> teredo_decode("2001:0000:4136:e378:8000:63bf:3fff:fdd2")
%{
server: "65.54.227.120",
client: "192.0.2.45",
port: 40000,
flags: {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
prefix: "2001:0000:4136:e378:8000:63bf:3fff:fdd2"
}
iex> teredo_decode({0x2001, 0, 0x4136, 0xe378, 0x8000, 0x63bf, 0x3fff, 0xfdd2})
%{
server: {65, 54, 227, 120},
client: {192, 0, 2, 45},
port: 40000,
flags: {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
prefix: {0x2001, 0x0, 0x4136, 0xe378, 0x8000, 0x63bf, 0x3fff, 0xfdd2}
}
iex> teredo_decode("1.1.1.1")
nil