M3UA: Allow user to specify local SCTP Port number
diff --git a/src/m3ua_core.erl b/src/m3ua_core.erl
index 380e1b4..dccda2a 100644
--- a/src/m3ua_core.erl
+++ b/src/m3ua_core.erl
@@ -41,6 +41,7 @@
user_pid,
sctp_remote_ip,
sctp_remote_port,
+ sctp_local_port,
sctp_sock,
sctp_assoc_id
}).
@@ -50,7 +51,7 @@
reconnect_sctp(L = #m3ua_state{sctp_remote_ip = Ip, sctp_remote_port = Port, sctp_sock = Sock}) ->
io:format("SCTP Reconnect ~p:~p~n", [Ip, Port]),
- InitMsg = #sctp_initmsg{num_ostreams = 1, max_instreams = 1},
+ InitMsg = #sctp_initmsg{num_ostreams = 2, max_instreams = 2},
case gen_sctp:connect(Sock, Ip, Port, [{active, once}, {reuseaddr, true},
{sctp_initmsg, InitMsg}]) of
{ok, Assoc} ->
@@ -60,11 +61,20 @@
end.
init(InitOpts) ->
- {ok, SctpSock} = gen_sctp:open([{active, once}, {reuseaddr, true}]),
+ OpenOptsBase = [{active, once}, {reuseaddr, true}],
+ LocalPort = proplists:get_value(sctp_local_port, InitOpts),
+ case LocalPort of
+ undefined ->
+ OpenOpts = OpenOptsBase;
+ _ ->
+ OpenOpts = OpenOptsBase ++ [{port, LocalPort}]
+ end,
+ {ok, SctpSock} = gen_sctp:open(OpenOpts),
LoopDat = #m3ua_state{role = asp, sctp_sock = SctpSock,
user_pid = proplists:get_value(user_pid, InitOpts),
sctp_remote_ip = proplists:get_value(sctp_remote_ip, InitOpts),
- sctp_remote_port = proplists:get_value(sctp_remote_port, InitOpts)},
+ sctp_remote_port = proplists:get_value(sctp_remote_port, InitOpts),
+ sctp_local_port = LocalPort},
LoopDat2 = reconnect_sctp(LoopDat),
{ok, asp_down, LoopDat2}.