From d794ba8845619322639f24602624b9acd71efc98 Mon Sep 17 00:00:00 2001 From: Fredrik Gustafsson Date: Tue, 30 Jul 2013 15:37:34 +0200 Subject: kernel: clarified inet:parse_address/1 referrering to old code --- lib/kernel/doc/src/inet.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index 7cd98914d1..f33ea3c57d 100644 --- a/lib/kernel/doc/src/inet.xml +++ b/lib/kernel/doc/src/inet.xml @@ -76,11 +76,11 @@ FFFF::192.168.42.2 {16#3ffe,16#b80,16#1f8d,16#2,16#204,16#acff,16#fe17,16#bf38} fe80::204:acff:fe17:bf38 {16#fe80,0,0,0,0,16#204,16#acff,16#fe17,16#bf38} -

A function that may be useful is inet_parse:address/1:

+

A function that may be useful is parse_address/1:

-1> inet_parse:address("192.168.42.2").
+1> inet:parse_address("192.168.42.2").
 {ok,{192,168,42,2}}
-2> inet_parse:address("FFFF::192.168.42.2").
+2> inet:parse_address("FFFF::192.168.42.2").
 {ok,{65535,0,0,0,0,0,49320,10754}}
-- cgit v1.2.3 From e547c997a4e516d3474e577bd4747e249303a7c7 Mon Sep 17 00:00:00 2001 From: Fredrik Gustafsson Date: Tue, 30 Jul 2013 16:06:40 +0200 Subject: kernel: added ntoa documentation and exported it in inet.erl --- lib/kernel/doc/src/inet.xml | 7 +++++++ lib/kernel/src/inet.erl | 9 ++++++++- lib/kernel/src/inet_parse.erl | 4 +++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index f33ea3c57d..254dfbf034 100644 --- a/lib/kernel/doc/src/inet.xml +++ b/lib/kernel/doc/src/inet.xml @@ -374,6 +374,13 @@ fe80::204:acff:fe17:bf38 + + + Convert IPv6 / IPV4 adress to ascii + +

Parses an ip_address() and returns an IPv4 or IPv6 address string.

+
+
Parse an IPv4 address diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl index 3ea530a366..d0fddec058 100644 --- a/lib/kernel/src/inet.erl +++ b/lib/kernel/src/inet.erl @@ -32,7 +32,7 @@ ip/1, stats/0, options/0, pushf/3, popf/1, close/1, gethostname/0, gethostname/1, parse_ipv4_address/1, parse_ipv6_address/1, parse_ipv4strict_address/1, - parse_ipv6strict_address/1, parse_address/1, parse_strict_address/1]). + parse_ipv6strict_address/1, parse_address/1, parse_strict_address/1, ntoa/1]). -export([connect_options/2, listen_options/2, udp_options/2, sctp_options/2]). @@ -529,6 +529,13 @@ getservbyname(Name, Protocol) when is_atom(Name) -> Error -> Error end. +-spec ntoa(IpAddress) -> + {ok, Address} | {error, einval} when + Address :: string(), + IPv4Address :: ip_address(). +ntoa(Addr) -> + inet_parse:ntoa(Addr). + -spec parse_ipv4_address(Address) -> {ok, IPv4Address} | {error, einval} when Address :: string(), diff --git a/lib/kernel/src/inet_parse.erl b/lib/kernel/src/inet_parse.erl index 619c78a6ca..98bd8d386c 100644 --- a/lib/kernel/src/inet_parse.erl +++ b/lib/kernel/src/inet_parse.erl @@ -722,7 +722,9 @@ ntoa({0,0,0,0,0,16#ffff,A,B}) -> "::FFFF:" ++ dig_to_dec(A) ++ "." ++ dig_to_dec(B); ntoa({_,_,_,_,_,_,_,_}=T) -> %% Find longest sequence of zeros, at least 2, to replace with "::" - ntoa(tuple_to_list(T), []). + ntoa(tuple_to_list(T), []); +ntoa(_) -> + {error, einval}. %% Find first double zero ntoa([], R) -> -- cgit v1.2.3 From ef31996dc6186222a9fadfae2beca702ea1a86ec Mon Sep 17 00:00:00 2001 From: Fredrik Gustafsson Date: Tue, 30 Jul 2013 16:10:13 +0200 Subject: kernel: changed tests where inet_parse:ntoa/1 was used to inet:parse/1 --- lib/kernel/test/inet_SUITE.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/kernel/test/inet_SUITE.erl b/lib/kernel/test/inet_SUITE.erl index 62ba95e1a3..46c8c0b88b 100644 --- a/lib/kernel/test/inet_SUITE.erl +++ b/lib/kernel/test/inet_SUITE.erl @@ -226,7 +226,7 @@ t_gethostbyname_v6(Config) when is_list(Config) -> h_addr_list = [IP4]} = HEnt4, {ok,IP46} = inet_parse:ipv6_address( - "::ffff:" ++ inet_parse:ntoa(IP4)), + "::ffff:" ++ inet:ntoa(IP4)), check_elems( [{HEnt#hostent.h_name,[Name,FullName]}]) end, @@ -246,7 +246,7 @@ t_gethostbyname_v6(Config) when is_list(Config) -> h_addr_list = [IP4F]} = HEnt4F, {ok,IP46F} = inet_parse:ipv6_address( - "::ffff:" ++ inet_parse:ntoa(IP4F)), + "::ffff:" ++ inet:ntoa(IP4F)), check_elems( [{HEntF#hostent.h_name,[Name,FullName]}]) end; -- cgit v1.2.3 From d8787b43ca5f33b6ec95300c8ce6f06c80886801 Mon Sep 17 00:00:00 2001 From: Fredrik Gustafsson Date: Tue, 30 Jul 2013 16:16:26 +0200 Subject: kernel: fixed specs to inet:ntoa/1 --- lib/kernel/src/inet.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/kernel/src/inet.erl b/lib/kernel/src/inet.erl index d0fddec058..5749027acd 100644 --- a/lib/kernel/src/inet.erl +++ b/lib/kernel/src/inet.erl @@ -532,7 +532,7 @@ getservbyname(Name, Protocol) when is_atom(Name) -> -spec ntoa(IpAddress) -> {ok, Address} | {error, einval} when Address :: string(), - IPv4Address :: ip_address(). + IpAddress :: ip_address(). ntoa(Addr) -> inet_parse:ntoa(Addr). -- cgit v1.2.3