fixeria has uploaded this change for review.

View Change

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).



To view, visit change 41531. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: newchange
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I081852d2df187ca7c3cb8969686530b8ac3644f3
Gerrit-Change-Number: 41531
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>