Packages
otpbp
7.9.3
7.18.0
7.16.1
7.15.0
7.14.0
7.13.0
7.12.0
7.11.0
7.10.2
7.9.3
7.9.2
7.9.1
7.8.7
7.8.6
7.8.5
7.8.4
7.7.1
7.7.0
7.6.3
7.6.2
7.6.1
7.6.0
7.5.1
7.5.0
7.4.0
7.3.4
7.3.3
7.3.2
7.3.1
7.3.0
7.2.0
7.1.1
7.1.0
7.0.4
7.0.3
7.0.2
7.0.1
6.26.0
6.25.0
6.24.0
6.23.0
6.22.2
6.21.3
6.21.2
6.21.1
6.20.2
6.19.1
6.19.0
6.18.3
6.18.2
6.18.1
6.18.0
6.17.1
6.17.0
6.16.0
6.15.4
6.15.3
6.15.2
6.15.1
6.15.0
6.14.0
6.13.5
6.13.4
6.13.3
6.13.2
6.13.1
6.13.0
6.12.0
6.11.2
6.11.1
6.10.0
6.9.2
6.9.1
6.9.0
6.8.0
6.7.1
6.7.0
6.6.4
6.6.3
6.6.2
6.6.1
6.6.0
6.5.0
6.4.0
6.3.3
6.3.2
6.3.1
6.3.0
6.2.1
6.2.0
6.1.0
6.0.0
5.39.0
5.38.0
5.37.0
5.36.0
5.35.2
5.34.3
5.34.2
5.34.1
5.33.1
5.32.1
5.32.0
5.31.3
5.31.2
5.31.1
5.31.0
5.30.1
5.30.0
5.29.0
5.28.4
5.28.3
5.28.2
5.28.1
5.28.0
5.27.0
5.26.5
5.26.4
5.26.3
5.26.2
5.26.1
5.26.0
5.25.0
5.24.2
5.24.1
5.23.0
5.22.2
5.22.1
5.22.0
5.21.0
5.20.1
5.20.0
5.19.4
5.19.3
5.19.2
5.19.1
5.19.0
5.18.0
5.17.0
5.16.3
5.16.1
5.16.0
5.15.1
5.15.0
5.14.0
5.13.1
5.13.0
5.12.1
5.12.0
5.11.2
5.11.1
5.10.1
5.10.0
5.9.0
5.8.0
5.7.0
5.6.1
5.6.0
5.5.0
5.4.2
5.4.1
5.4.0
5.3.0
5.2.2
5.2.1
5.2.0
5.1.2
5.1.1
4.79.0
4.78.0
4.77.0
4.76.2
4.75.3
4.75.2
4.75.1
4.74.0
4.73.1
4.73.0
4.72.3
4.72.2
4.72.1
4.72.0
4.71.1
4.71.0
4.70.0
4.69.4
4.69.3
4.69.2
4.69.1
4.69.0
4.68.0
4.67.5
4.67.4
4.67.3
4.67.2
4.67.0
4.66.0
4.65.2
4.65.1
4.64.0
4.63.2
4.63.1
4.63.0
4.62.0
4.61.1
4.61.0
4.60.4
4.60.3
4.60.2
4.60.1
4.60.0
4.59.0
4.58.0
4.57.2
4.57.1
4.57.0
4.56.2
4.56.1
4.56.0
4.55.0
4.54.0
4.53.0
4.52.1
4.52.0
4.51.3
4.51.2
4.51.0
4.50.0
4.49.3
4.49.2
OTP backports
Current section
Files
Jump to
Current section
Files
src/otpbp_inet.erl
-module(otpbp_inet).
-ifndef(HAVE_inet__ipv4_mapped_ipv6_address_1).
% OTP 21.0
-export([ipv4_mapped_ipv6_address/1]).
-endif.
-ifndef(HAVE_inet__gen_tcp_module_1).
% OTP 23.0
-export([gen_tcp_module/1]).
-endif.
-ifndef(HAVE_inet__ensure_sockaddr_1).
% OTP 24.0
-export([ensure_sockaddr/1]).
-compile({parse_transform, otpbp_pt}).
-endif.
-ifndef(HAVE_inet__info_1).
% OTP 24.0
-export([info/1]).
-endif.
-ifndef(HAVE_inet__gen_udp_module_1).
% OTP 24.1
-export([gen_udp_module/1]).
-endif.
-ifndef(HAVE_inet__is_ip_address_1).
% OTP 25.0
-export([is_ip_address/1]).
-endif.
-ifndef(HAVE_inet__is_ipv4_address_1).
% OTP 25.0
-export([is_ipv4_address/1]).
-endif.
-ifndef(HAVE_inet__is_ipv6_address_1).
% OTP 25.0
-export([is_ipv6_address/1]).
-endif.
-ifndef(HAVE_inet__is_ip_address_1).
-ifdef(HAVE_inet__is_ipv4_address_1).
-import(inet, [is_ipv4_address/1]).
-endif.
-ifdef(HAVE_inet__is_ipv6_address_1).
-import(inet, [is_ipv6_address/1]).
-endif.
-endif.
-ifndef(HAVE_inet__ipv4_mapped_ipv6_address_1).
ipv4_mapped_ipv6_address({D1, D2, D3, D4}) when (D1 bor D2 bor D3 bor D4) =< 16#FF ->
{0, 0, 0, 0, 0, 16#FFFF, (D1 bsl 8) bor D2, (D3 bsl 8) bor D4};
ipv4_mapped_ipv6_address({D1, D2, D3, D4, D5, D6, D7, D8})
when (D1 bor D2 bor D3 bor D4 bor D5 bor D6 bor D7 bor D8) =< 16#FFFF ->
{D7 bsr 8, D7 band 16#FF, D8 bsr 8, D8 band 16#FF}.
-endif.
-ifndef(HAVE_inet__gen_tcp_module_1).
gen_tcp_module(Opts) -> {gen_tcp, Opts}.
-endif.
-ifndef(HAVE_inet__ensure_sockaddr_1).
ensure_sockaddr(SockAddr) ->
try
prim_socket:enc_sockaddr(SockAddr)
catch
throw:{invalid, _} = Invalid:Stacktrace -> erlang:raise(error, Invalid, Stacktrace)
end.
-endif.
-ifndef(HAVE_inet__info_1).
info({'$inet', GenSocketMod, _} = Socket) when is_atom(GenSocketMod) -> GenSocketMod:info(Socket);
info(Socket) ->
maps:merge(port_info(Socket),
#{counters => case inet:getstat(Socket) of
{ok, Stats} -> maps:from_list(Stats);
_ -> []
end,
states => case prim_inet:getstatus(Socket) of
{ok, State} -> State;
_ -> #{}
end}).
port_info(P) when is_port(P) ->
maps:from_list([erlang:port_info(P, memory), erlang:port_info(P, monitors)
|port_info(erlang:port_info(P), [connected, links, input, output])]);
port_info(_) -> #{}.
port_info(PI, Items) -> port_info(PI, Items, []).
port_info(_PI, [], Acc) -> Acc;
port_info(PI, [Item | Items], Acc) -> port_info(PI, Items, [{Item, proplists:get_value(Item, PI)}|Acc]).
-endif.
-ifndef(HAVE_inet__gen_udp_module_1).
gen_udp_module(Opts) -> {gen_udp, Opts}.
-endif.
-ifndef(HAVE_inet__is_ip_address_1).
is_ip_address(Address) -> is_ipv4_address(Address) orelse is_ipv6_address(Address).
-endif.
-ifndef(HAVE_inet__is_ipv4_address_1).
-define(ip(A, B, C, D), (A bor B bor C bor D) band (bnot 16#ff) =:= 0).
is_ipv4_address({A, B, C, D}) when ?ip(A, B, C, D) -> true;
is_ipv4_address(_) -> false.
-endif.
-ifndef(HAVE_inet__is_ipv6_address_1).
-define(ip6(A, B, C, D, E, F, G, H), (A bor B bor C bor D bor E bor F bor G bor H) band (bnot 16#ffff) =:= 0).
is_ipv6_address({A, B, C, D, E, F, G, H}) when ?ip6(A, B, C, D, E, F, G, H) -> true;
is_ipv6_address(_) -> false.
-endif.