diff --git a/lib/inspect/ip/address.ex b/lib/inspect/ip/address.ex index f107af6..adae5e0 100644 --- a/lib/inspect/ip/address.ex +++ b/lib/inspect/ip/address.ex @@ -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 diff --git a/lib/ip/address.ex b/lib/ip/address.ex index 7afa794..ba72b43 100644 --- a/lib/ip/address.ex +++ b/lib/ip/address.ex @@ -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!() diff --git a/lib/ip/prefix.ex b/lib/ip/prefix.ex index bddc9eb..87ba325 100644 --- a/lib/ip/prefix.ex +++ b/lib/ip/prefix.ex @@ -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 diff --git a/lib/ip/scope.ex b/lib/ip/scope.ex index ecfc80d..a7fa8ef 100644 --- a/lib/ip/scope.ex +++ b/lib/ip/scope.ex @@ -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"},