Include address scope in inspect output.
This commit is contained in:
parent
d92a777500
commit
ee7b25e79c
4 changed files with 19 additions and 16 deletions
|
@ -1,5 +1,5 @@
|
|||
defimpl Inspect, for: IP.Address do
|
||||
alias IP.Address
|
||||
alias IP.{Address, Scope}
|
||||
import Inspect.Algebra
|
||||
|
||||
@moduledoc """
|
||||
|
@ -12,13 +12,14 @@ defimpl Inspect, for: IP.Address do
|
|||
## Examples
|
||||
|
||||
iex> IP.Address.from_string!("192.0.2.1", 4)
|
||||
#IP.Address<192.0.2.1>
|
||||
#IP.Address<192.0.2.1 DOCUMENTATION>
|
||||
|
||||
iex> IP.Address.from_string!("2001:db8::1", 6)
|
||||
#IP.Address<2001:db8::1>
|
||||
#IP.Address<2001:db8::1 DOCUMENTATION>
|
||||
"""
|
||||
@spec inspect(Address.t, list) :: binary
|
||||
def inspect(address, _opts) do
|
||||
concat ["#IP.Address<#{address}>"]
|
||||
scope = Scope.address_scope(address)
|
||||
concat ["#IP.Address<#{address} #{scope}>"]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -395,7 +395,7 @@ defmodule IP.Address do
|
|||
iex> "192.0.2.1"
|
||||
...> |> IP.Address.from_string!()
|
||||
...> |> IP.Address.to_6to4()
|
||||
#IP.Address<2002:c000:201::>
|
||||
#IP.Address<2002:c000:201:: GLOBAL UNICAST (6to4)>
|
||||
"""
|
||||
@spec to_6to4(t) :: {:ok, t} | {:error, term}
|
||||
def to_6to4(%Address{address: address, version: 4}) do
|
||||
|
@ -435,7 +435,7 @@ defmodule IP.Address do
|
|||
...> |> IP.Address.from_string!()
|
||||
...> |> IP.Address.from_6to4()
|
||||
...> |> inspect()
|
||||
"{:ok, #IP.Address<192.0.2.1>}"
|
||||
"{:ok, #IP.Address<192.0.2.1 DOCUMENTATION>}"
|
||||
|
||||
iex> "2001:db8::"
|
||||
...> |> IP.Address.from_string!()
|
||||
|
@ -477,13 +477,13 @@ defmodule IP.Address do
|
|||
...> |> IP.Address.from_string!()
|
||||
...> |> IP.Address.teredo()
|
||||
...> |> Map.get(:server)
|
||||
#IP.Address<65.54.227.120>
|
||||
#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>
|
||||
#IP.Address<63.255.253.210 GLOBAL UNICAST>
|
||||
|
||||
iex> "2001:0:4136:e378:8000:63bf:3fff:fdd2"
|
||||
...> |> IP.Address.from_string!()
|
||||
|
|
|
@ -188,7 +188,7 @@ defmodule IP.Prefix do
|
|||
|
||||
iex> IP.Prefix.from_string!("192.0.2.0/24")
|
||||
...> |> IP.Prefix.subnet_mask()
|
||||
#IP.Address<255.255.255.0>
|
||||
#IP.Address<255.255.255.0 RESERVED>
|
||||
"""
|
||||
@spec subnet_mask(t) :: binary
|
||||
def subnet_mask(%Prefix{mask: mask, address: %Address{version: 4}}) do
|
||||
|
@ -203,7 +203,7 @@ defmodule IP.Prefix do
|
|||
|
||||
iex> IP.Prefix.from_string!("192.0.2.0/24")
|
||||
...> |> IP.Prefix.wildcard_mask()
|
||||
#IP.Address<0.0.0.255>
|
||||
#IP.Address<0.0.0.255 CURRENT NETWORK>
|
||||
"""
|
||||
@spec wildcard_mask(t) :: binary
|
||||
def wildcard_mask(%Prefix{mask: mask, address: %Address{version: 4}}) do
|
||||
|
@ -220,11 +220,11 @@ defmodule IP.Prefix do
|
|||
|
||||
iex> IP.Prefix.from_string!("192.0.2.128/24")
|
||||
...> |> IP.Prefix.first()
|
||||
#IP.Address<192.0.2.0>
|
||||
#IP.Address<192.0.2.0 DOCUMENTATION>
|
||||
|
||||
iex> IP.Prefix.from_string!("2001:db8::128/64")
|
||||
...> |> IP.Prefix.first()
|
||||
#IP.Address<2001:db8::>
|
||||
#IP.Address<2001:db8:: DOCUMENTATION>
|
||||
"""
|
||||
@spec first(t) :: Address.t
|
||||
def first(%Prefix{address: %Address{address: address, version: version}, mask: mask}) do
|
||||
|
@ -238,11 +238,11 @@ defmodule IP.Prefix do
|
|||
|
||||
iex> IP.Prefix.from_string!("192.0.2.128/24")
|
||||
...> |> IP.Prefix.last()
|
||||
#IP.Address<192.0.2.255>
|
||||
#IP.Address<192.0.2.255 DOCUMENTATION>
|
||||
|
||||
iex> IP.Prefix.from_string!("2001:db8::128/64")
|
||||
...> |> IP.Prefix.last()
|
||||
#IP.Address<2001:db8::ffff:ffff:ffff:ffff>
|
||||
#IP.Address<2001:db8::ffff:ffff:ffff:ffff DOCUMENTATION>
|
||||
"""
|
||||
def last(%Prefix{address: %Address{address: address, version: 4}, mask: mask}) do
|
||||
Address.from_integer!((address &&& mask) + (~~~mask &&& @ipv4_mask), 4)
|
||||
|
@ -304,7 +304,7 @@ defmodule IP.Prefix do
|
|||
...> |> IP.Prefix.from_string!
|
||||
...> |> IP.Prefix.eui_64("60:f8:1d:ad:d8:90")
|
||||
...> |> inspect()
|
||||
"{:ok, #IP.Address<2001:db8::62f8:1dff:fead:d890>}"
|
||||
"{:ok, #IP.Address<2001:db8::62f8:1dff:fead:d890 DOCUMENTATION>}"
|
||||
"""
|
||||
@spec eui_64(t, binary) :: Address.t
|
||||
def eui_64(%Prefix{address: %Address{version: 6},
|
||||
|
@ -330,7 +330,7 @@ defmodule IP.Prefix do
|
|||
iex> "2001:db8::/64"
|
||||
...> |> IP.Prefix.from_string!
|
||||
...> |> IP.Prefix.eui_64!("60:f8:1d:ad:d8:90")
|
||||
#IP.Address<2001:db8::62f8:1dff:fead:d890>
|
||||
#IP.Address<2001:db8::62f8:1dff:fead:d890 DOCUMENTATION>
|
||||
"""
|
||||
@spec eui_64!(t, binary) :: Address.t
|
||||
def eui_64!(prefix, mac) do
|
||||
|
|
|
@ -30,6 +30,8 @@ defmodule IP.Scope do
|
|||
]
|
||||
|
||||
@v6_scopes [
|
||||
{"2002::/16", "GLOBAL UNICAST (6to4)"},
|
||||
{"2001::/32", "GLOBAL UNICAST (TEREDO)"},
|
||||
{"2001:10::/28", "ORCHID"},
|
||||
{"2001:db8::/32", "DOCUMENTATION"},
|
||||
{"2000::/3", "GLOBAL UNICAST"},
|
||||
|
|
Loading…
Reference in a new issue