fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41531?usp=email )
Change subject: sctp_common: gen_sockopts/1: add heartbeat and RTO params ......................................................................
sctp_common: gen_sockopts/1: add heartbeat and RTO params
Change-Id: I081852d2df187ca7c3cb8969686530b8ac3644f3 Co-authored-by: Andreas Eversberg jolly@eversberg.eu Related: SYS#7653 --- M src/sctp_common.erl 1 file changed, 17 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/31/41531/1
diff --git a/src/sctp_common.erl b/src/sctp_common.erl index 9a57798..88be87c 100644 --- a/src/sctp_common.erl +++ b/src/sctp_common.erl @@ -49,6 +49,10 @@
-define(SOCKOPTS_DEFAULT_BUFSZ, 65536). -define(SOCKOPTS_DEFAULT_NODELAY, true). +-define(SOCKOPTS_DEFAULT_HBINTERVAL, 2000). +-define(SOCKOPTS_DEFAULT_RTO_INIT, 1000). +-define(SOCKOPTS_DEFAULT_RTO_MIN, 1000). +-define(SOCKOPTS_DEFAULT_RTO_MAX, 1000).
-type sock_aid() :: {gen_sctp:sctp_socket(), @@ -91,9 +95,21 @@
-spec gen_sockopts(map()) -> [gen_sctp:option()]. gen_sockopts(SockOptsCfg) -> + %% heartbeat parameters + HBInterval = maps:get(hbinterval, SockOptsCfg, ?SOCKOPTS_DEFAULT_HBINTERVAL), + PAP = #sctp_paddrparams{assoc_id = 0, + hbinterval = HBInterval, + flags = [hb_enable]}, + %% retransmission time-out parameters + RTO = #sctp_rtoinfo{assoc_id = 0, + initial = maps:get(rto_initial, SockOptsCfg, ?SOCKOPTS_DEFAULT_RTO_INIT), + min = maps:get(rto_min, SockOptsCfg, ?SOCKOPTS_DEFAULT_RTO_MIN), + max = maps:get(rto_max, SockOptsCfg, ?SOCKOPTS_DEFAULT_RTO_MAX)}, SockOpts = #{recbuf => maps:get(recbuf, SockOptsCfg, ?SOCKOPTS_DEFAULT_BUFSZ), sndbuf => maps:get(sndbuf, SockOptsCfg, ?SOCKOPTS_DEFAULT_BUFSZ), - sctp_nodelay => maps:get(nodelay, SockOptsCfg, ?SOCKOPTS_DEFAULT_NODELAY)}, + sctp_nodelay => maps:get(nodelay, SockOptsCfg, ?SOCKOPTS_DEFAULT_NODELAY), + sctp_peer_addr_params => PAP, + sctp_rtoinfo => RTO}, maps:to_list(SockOpts).