summaryrefslogtreecommitdiff
path: root/lib/kernel/src
diff options
context:
space:
mode:
authorRaimo Niskanen <raimo@erlang.org>2023-01-27 15:44:00 +0100
committerRaimo Niskanen <raimo@erlang.org>2023-02-09 15:33:37 +0100
commit01d4b6947c23c0edec86b299b3a5825d94a51f80 (patch)
tree081b3692a177c51e44aa9d62cf004d7dc8b2129f /lib/kernel/src
parentc427f478b282c0c6f068753b0ec1175d6048092e (diff)
downloaderlang-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.erl46
-rw-r--r--lib/kernel/src/inet_epmd_socket.erl5
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}