diff options
author | Raimo Niskanen <raimo@erlang.org> | 2023-01-27 15:44:00 +0100 |
---|---|---|
committer | Raimo Niskanen <raimo@erlang.org> | 2023-02-09 15:33:37 +0100 |
commit | 01d4b6947c23c0edec86b299b3a5825d94a51f80 (patch) | |
tree | 081b3692a177c51e44aa9d62cf004d7dc8b2129f /lib/kernel/src | |
parent | c427f478b282c0c6f068753b0ec1175d6048092e (diff) | |
download | erlang-01d4b6947c23c0edec86b299b3a5825d94a51f80.tar.gz |
Add kTLS/inet_drv with cryptcookie setup to the repertoire
Diffstat (limited to 'lib/kernel/src')
-rw-r--r-- | lib/kernel/src/inet_epmd_dist.erl | 46 | ||||
-rw-r--r-- | lib/kernel/src/inet_epmd_socket.erl | 5 |
2 files changed, 29 insertions, 22 deletions
diff --git a/lib/kernel/src/inet_epmd_dist.erl b/lib/kernel/src/inet_epmd_dist.erl index 1f7a10e288..94ee50193f 100644 --- a/lib/kernel/src/inet_epmd_dist.erl +++ b/lib/kernel/src/inet_epmd_dist.erl @@ -27,7 +27,7 @@ connect/3]). %% DistMod helper API -export([check_ip/2, wait_for_code_server/1, - f_address/2, tick/1, getstat/1, setopts/2, getopts/2, + hs_data/2, f_address/2, tick/1, getstat/1, setopts/2, getopts/2, nodelay/0, merge_options/3]). %% net_kernel and dist_util distribution Module API @@ -156,7 +156,7 @@ flush_to(Socket, Pid) -> %% ------------------------------------------------------------ accepted(NetAddress, _Timer, Socket) -> - hs_data(Socket, NetAddress). + hs_data(NetAddress, Socket). %% ------------------------------------------------------------ connect(NetAddress, _Timer, Options) -> @@ -166,14 +166,14 @@ connect(NetAddress, _Timer, Options) -> maybe {ok, Socket} ?= ?DRIVER:connect(Ip, Port, ConnectOptions), - hs_data(Socket, NetAddress) + hs_data(NetAddress, Socket) else {error, _} = Error -> Error end. %% ------- -hs_data(Socket, NetAddress) -> +hs_data(NetAddress, Socket) -> Nodelay = nodelay(), #hs_data{ socket = Socket, @@ -181,33 +181,37 @@ hs_data(Socket, NetAddress) -> f_recv = fun ?DRIVER:recv/3, f_setopts_pre_nodeup = fun (S) when S =:= Socket -> - inet:setopts( - S, - [{active, false}, {packet, 4}, Nodelay]) + f_setopts_pre_nodeup(S, Nodelay) end, f_setopts_post_nodeup = fun (S) when S =:= Socket -> - inet:setopts( - S, - [{active, true}, {packet,4}, - {deliver, port}, binary, Nodelay]) + f_setopts_post_nodeup(S, Nodelay) + end, + f_address = + fun (S, Node) when S =:= Socket -> + f_address(NetAddress, Node) end, - f_address = f_address(Socket, NetAddress), f_getll = fun inet:getll/1, mf_tick = fun ?MODULE:tick/1, mf_getstat = fun ?MODULE:getstat/1, mf_setopts = fun ?MODULE:setopts/2, mf_getopts = fun ?MODULE:getopts/2 }. -f_address(Socket, NetAddress) -> - fun (S, Node) when S =:= Socket -> - case dist_util:split_node(Node) of - {node, _Name, Host} -> - NetAddress#net_address{ - host = Host }; - Other -> - ?shutdown2(Node, {split_node, Other}) - end +f_setopts_pre_nodeup(Socket, Nodelay) -> + inet:setopts(Socket, [{active, false}, {packet, 4}, Nodelay]). + +f_setopts_post_nodeup(Socket, Nodelay) -> + inet:setopts( + Socket, + [{active, true}, {packet,4}, {deliver, port}, binary, Nodelay]). + +f_address(NetAddress, Node) -> + case dist_util:split_node(Node) of + {node, _Name, Host} -> + NetAddress#net_address{ + host = Host }; + Other -> + ?shutdown2(Node, {split_node, Other}) end. tick(Socket) when is_port(Socket) -> diff --git a/lib/kernel/src/inet_epmd_socket.erl b/lib/kernel/src/inet_epmd_socket.erl index 49a56f84d0..cabd8c57c6 100644 --- a/lib/kernel/src/inet_epmd_socket.erl +++ b/lib/kernel/src/inet_epmd_socket.erl @@ -187,7 +187,10 @@ start_dist_ctrl(NetAddress, Socket) -> %%% socket:setopt(S, {otp,debug}, true) %%% end, f_setopts_post_nodeup = f_ok(Socket), - f_address = inet_epmd_dist:f_address(Socket, NetAddress), + f_address = + fun (S, Node) when S =:= Socket -> + inet_epmd_dist:f_address(NetAddress, Node) + end, f_getll = fun (S) when S =:= Socket -> {ok, DistCtrl} |