fixeria has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/40017?usp=email )
Change subject: sctp_{client,server}: allow passing additional sockopts
......................................................................
sctp_{client,server}: allow passing additional sockopts
Follow-up patches will be setting sctp_nodelay/recbuf/sndbuf.
Change-Id: I34f12be80c8844333f54a193ed078bb65771e246
Related: SYS#7288
---
M src/sctp_client.erl
M src/sctp_server.erl
2 files changed, 7 insertions(+), 3 deletions(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
osmith: Looks good to me, but someone else must approve
diff --git a/src/sctp_client.erl b/src/sctp_client.erl
index 7860446..0396109 100644
--- a/src/sctp_client.erl
+++ b/src/sctp_client.erl
@@ -43,7 +43,8 @@
-type cfg() :: #{laddr => any | string() | inet:ip_address(),
raddr => loopback | string() | inet:ip_address(),
- rport => inet:port_number()
+ rport => inet:port_number(),
+ sockopts => [gen_sctp:option()]
}.
-type connect_result() :: {ok, gen_sctp:sctp_socket()}.
@@ -79,13 +80,14 @@
-spec connect(cfg()) -> connect_result().
connect(Cfg) ->
+ SockOpts = maps:get(sockopts, Cfg, []), %% additional sockopts
LAddr = sctp_common:parse_addr(maps:get(laddr, Cfg, any)),
RAddr = sctp_common:parse_addr(maps:get(raddr, Cfg, localhost)),
RPort = maps:get(rport, Cfg),
{ok, Sock} = gen_sctp:open([{ip, LAddr},
{type, seqpacket},
{sctp_nodelay, true},
- {active, true}]),
+ {active, true}] ++ SockOpts),
gen_sctp:connect_init(Sock, RAddr, RPort, []),
{ok, Sock}.
diff --git a/src/sctp_server.erl b/src/sctp_server.erl
index 06a9888..7f12878 100644
--- a/src/sctp_server.erl
+++ b/src/sctp_server.erl
@@ -63,6 +63,7 @@
-type cfg() :: #{laddr => any | string() | inet:ip_address(),
lport => inet:port_number(),
+ sockopts => [gen_sctp:option()],
handler => module(),
priv => term()
}.
@@ -114,13 +115,14 @@
handler := Handler,
priv := Priv} = Cfg]) ->
process_flag(trap_exit, true),
+ SockOpts = maps:get(sockopts, Cfg, []), %% additional sockopts
LAddr = sctp_common:parse_addr(maps:get(laddr, Cfg, any)),
{ok, Sock} = gen_sctp:open([{ip, LAddr},
{port, LPort},
{type, seqpacket},
{reuseaddr, true},
{sctp_nodelay, true},
- {active, true}]),
+ {active, true}] ++ SockOpts),
?LOG_INFO("SCTP server listening on ~p:~p", [LAddr, LPort]),
ok = gen_sctp:listen(Sock, true),
{ok, #server_state{sock = Sock,
--
To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/40017?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I34f12be80c8844333f54a193ed078bb65771e246
Gerrit-Change-Number: 40017
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>