ip v0.1.0 IP.Address
Simple representations of IP Addresses.
Link to this section Summary
Functions
Returns true if the address is an EUI-64 address
Return a MAC address coded in an EUI-64 address
Convert a 6to4 IPv6 address to it’s correlated IPv6 address
Convert from (packed) binary representations (either 32 or 128 bits long) into an address
Convert from a packed binary presentation to an address or raise an
IP.Address.InvalidAddress
exception
Convert an integer into an IP address of specified version
Convert an integer into an IP address of specified version or raise an
IP.Address.InvalidAddress
exception
Convert a string representation into an IP address of unknown version
Convert a string representation into an IP address of specified version
Convert a string representation into an IP address or raise an
IP.Address.InvalidAddress
exception
Convert a string representation into an IP address of specified version or raise an
IP.Address.InvalidAddress
exception
Generate an IPv6 Unique Local Address
Determine if the IP address is a 6to4 address
Determine if an IP address is a teredo connection
Return information about a teredo connection
Convert an IPv4 address into a 6to4 address
Returns the IP Address as an integer
Convert an address
to an IP.Prefix
Convert an address
into a string
Returns true if address
is version 4
Returns true if address
is version 6
Returns the IP version of the address
Link to this section Types
Link to this section Functions
Returns true if the address is an EUI-64 address.
Examples
iex> "2001:db8::62f8:1dff:fead:d890"
...> |> IP.Address.from_string!()
...> |> IP.Address.eui_64?()
true
Return a MAC address coded in an EUI-64 address.
Examples
iex> "2001:db8::62f8:1dff:fead:d890"
...> |> IP.Address.from_string!()
...> |> IP.Address.eui_64_mac()
{:ok, "60f8.1dad.d890"}
Convert a 6to4 IPv6 address to it’s correlated IPv6 address.
Examples
iex> "2002:c000:201::"
...> |> IP.Address.from_string!()
...> |> IP.Address.from_6to4()
...> |> inspect()
"{:ok, #IP.Address<192.0.2.1 DOCUMENTATION>}"
iex> "2001:db8::"
...> |> IP.Address.from_string!()
...> |> IP.Address.from_6to4()
{:error, "Not a 6to4 address"}
Convert from (packed) binary representations (either 32 or 128 bits long) into an address.
Examples
iex> <<192, 0, 2, 1>>
...> |> IP.Address.from_binary()
{:ok, %IP.Address{address: 3221225985, version: 4}}
iex> <<32, 1, 13, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>>
...> |> IP.Address.from_binary()
{:ok, %IP.Address{address: 42540766411282592856903984951653826560, version: 6}}
iex> "192.0.2.1"
...> |> IP.Address.from_binary()
{:error, "Unable to convert binary to address"}
Convert from a packed binary presentation to an address or raise an
IP.Address.InvalidAddress
exception.
Examples
iex> <<192, 0, 2, 1>>
...> |> IP.Address.from_binary!()
%IP.Address{address: 3221225985, version: 4}
iex> <<32, 1, 13, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1>>
...> |> IP.Address.from_binary!()
%IP.Address{address: 42540766411282592856903984951653826561, version: 6}
from_integer(ipv4 | ipv6, ip_version) :: {:ok, t} | {:error, term}
Convert an integer into an IP address of specified version.
Examples
iex> 3221225985
...> |> IP.Address.from_integer(4)
{:ok, %IP.Address{address: 3221225985, version: 4}}
iex> 42540766411282592856903984951653826561
...> |> IP.Address.from_integer(6)
{:ok, %IP.Address{address: 42540766411282592856903984951653826561, version: 6}}
Convert an integer into an IP address of specified version or raise an
IP.Address.InvalidAddress
exception.
Examples
iex> 3221225985
...> |> IP.Address.from_integer!(4)
%IP.Address{address: 3221225985, version: 4}
iex> 42540766411282592856903984951653826561
...> |> IP.Address.from_integer!(6)
%IP.Address{address: 42540766411282592856903984951653826561, version: 6}
Convert a string representation into an IP address of unknown version.
Tries to parse the string as IPv6, then IPv4 before failing. Obviously if
you know the version then using from_string/2
is faster.
Examples
iex> "192.0.2.1"
...> |> IP.Address.from_string()
{:ok, %IP.Address{address: 3221225985, version: 4}}
iex> "2001:db8::1"
...> |> IP.Address.from_string()
{:ok, %IP.Address{address: 42540766411282592856903984951653826561, version: 6}}
from_string(binary, ip_version) :: {:ok, t} | {:error, term}
Convert a string representation into an IP address of specified version.
Examples
iex> "192.0.2.1"
...> |> IP.Address.from_string(4)
{:ok, %IP.Address{address: 3221225985, version: 4}}
iex> "2001:db8::1"
...> |> IP.Address.from_string(6)
{:ok, %IP.Address{address: 42540766411282592856903984951653826561, version: 6}}
Convert a string representation into an IP address or raise an
IP.Address.InvalidAddress
exception.
Examples
iex> "192.0.2.1"
...> |> IP.Address.from_string!()
%IP.Address{address: 3221225985, version: 4}
iex> "2001:db8::1"
...> |> IP.Address.from_string!()
%IP.Address{address: 42540766411282592856903984951653826561, version: 6}
Convert a string representation into an IP address of specified version or raise an
IP.Address.InvalidAddress
exception.
Examples
iex> "192.0.2.1"
...> |> IP.Address.from_string!(4)
%IP.Address{address: 3221225985, version: 4}
iex> "2001:db8::1"
...> |> IP.Address.from_string!(6)
%IP.Address{address: 42540766411282592856903984951653826561, version: 6}
generate_ula(binary, non_neg_integer, true | false) :: {:ok, t} | {:error, term}
Generate an IPv6 Unique Local Address
Note that the MAC address is just used as a source of randomness, so where you get it from is not important and doesn’t restrict this ULA to just that system. See RFC4193
Examples
iex> IP.Address.generate_ula("60:f8:1d:ad:d8:90")
#IP.Address<fd29:f1ef:86a1::>
Determine if the IP address is a 6to4 address.
Examples
iex> "2002:c000:201::"
...> |> IP.Address.from_string!()
...> |> IP.Address.is_6to4?()
true
iex> "2001:db8::"
...> |> IP.Address.from_string!()
...> |> IP.Address.is_6to4?()
false
Determine if an IP address is a teredo connection.
Examples
iex> "2001::"
...> |> IP.Address.from_string!()
...> |> IP.Address.is_teredo?()
true
Return information about a teredo connection.
Examples
iex> "2001:0:4136:e378:8000:63bf:3fff:fdd2"
...> |> IP.Address.from_string!()
...> |> IP.Address.teredo()
...> |> Map.get(:server)
#IP.Address<65.54.227.120 GLOBAL UNICAST>
iex> "2001:0:4136:e378:8000:63bf:3fff:fdd2"
...> |> IP.Address.from_string!()
...> |> IP.Address.teredo()
...> |> Map.get(:client)
#IP.Address<63.255.253.210 GLOBAL UNICAST>
iex> "2001:0:4136:e378:8000:63bf:3fff:fdd2"
...> |> IP.Address.from_string!()
...> |> IP.Address.teredo()
...> |> Map.get(:port)
25535
Convert an IPv4 address into a 6to4 address.
Examples
iex> "192.0.2.1"
...> |> IP.Address.from_string!()
...> |> IP.Address.to_6to4()
#IP.Address<2002:c000:201:: GLOBAL UNICAST (6to4)>
Returns the IP Address as an integer
Examples
iex> "192.0.2.1"
...> |> IP.Address.from_string!
...> |> IP.Address.to_integer()
3221225985
iex> "2001:db8::1"
...> |> IP.Address.from_string!
...> |> IP.Address.to_integer()
42540766411282592856903984951653826561
to_prefix(t, IP.Prefix.ipv4_prefix_length | IP.Prefix.ipv6_prefix_length) :: IP.Prefix.t
Convert an address
to an IP.Prefix
.
Examples
iex> IP.Address.from_string!("192.0.2.1", 4)
...> |> IP.Address.to_prefix(32)
#IP.Prefix<192.0.2.1/32>
Convert an address
into a string.
Examples
iex> IP.Address.from_string!("192.0.2.1", 4)
...> |> IP.Address.to_string()
"192.0.2.1"
iex> IP.Address.from_string!("2001:db8::1", 6)
...> |> IP.Address.to_string()
"2001:db8::1"
Returns true if address
is version 4.
Examples
iex> "192.0.2.1"
...> |> IP.Address.from_string!()
...> |> IP.Address.v4?
true
iex> "2001:db8::"
...> |> IP.Address.from_string!()
...> |> IP.Address.v4?
false
Returns true if address
is version 6.
Examples
iex> "192.0.2.1"
...> |> IP.Address.from_string!()
...> |> IP.Address.v6?
false
iex> "2001:db8::"
...> |> IP.Address.from_string!()
...> |> IP.Address.v6?
true