xua_asp_fsm: add support for SG mode in addition to existing ASP mode
diff --git a/src/ss7_link_m2ua.erl b/src/ss7_link_m2ua.erl
index 494f042..3d93feb 100644
--- a/src/ss7_link_m2ua.erl
+++ b/src/ss7_link_m2ua.erl
@@ -42,24 +42,27 @@
 
 -export([start_link/1, init/1]).
 
--export([handle_cast/2]).
+-export([handle_cast/2, terminate/2]).
 
 -record(loop_dat, {
 	 m2ua_pid,
 	 link
 	}).
 
-start_link(Args) ->
-	gen_server:start_link(?MODULE, Args, [{debug, [trace]}]).
+start_link(Args = #sigtran_link{name=LinkName}) ->
+	Name = list_to_atom("ss7_link_m2ua_" ++ LinkName),
+	gen_server:start_link({local, Name}, ?MODULE, Args, [{debug, [trace]}]).
 
 init(L = #sigtran_link{type = m2ua, name = Name, linkset_name = LinksetName,
-		       sls = Sls, local = Local, remote = Remote}) ->
+		       sls = Sls, local = Local, remote = Remote, role = Role}) ->
 	#sigtran_peer{ip = LocalIp, port = LocalPort} = Local,
 	#sigtran_peer{ip = RemoteIp, port = RemotePort} = Remote,
 	% start the M2UA link to the SG
-	Opts = [{module, sctp_m2ua}, {module_args, []},
+	Opts = [{module, sctp_m2ua}, {module_args, [Role]},
+		{sctp_role, ss7_links:role2sctp_role(Role)},
 		{user_pid, self()}, {sctp_remote_ip, RemoteIp},
 		{sctp_remote_port, RemotePort}, {sctp_local_port, LocalPort},
+		{sctp_local_ip, LocalIp},
 		{user_fun, fun m2ua_tx_to_user/2}, {user_args, self()}],
 	{ok, M2uaPid} = sctp_core:start_link(Opts),
 	% FIXME: register this link with SCCP_SCRC
@@ -92,10 +95,7 @@
 	scrc_tx_to_mtp(P, L#loop_dat.m2ua_pid),
 	{noreply, L};
 % This is what we receive from m2ua_tx_to_user/2
-handle_cast(#primitive{subsystem = 'M', gen_name = 'SCTP_ESTABLISH', spec_name = confirm}, L) ->
-	io:format("~p: SCTP_ESTABLISH.ind -> ASP_UP.req~n", [?MODULE]),
-	gen_fsm:send_event(L#loop_dat.m2ua_pid, osmo_util:make_prim('M','ASP_UP',request)),
-	{noreply, L};
+
 handle_cast(#primitive{subsystem = 'M', gen_name = 'ASP_UP', spec_name = confirm}, L) ->
 	io:format("~p: ASP_UP.ind -> ASP_ACTIVE.req~n", [?MODULE]),
 	set_link_state(L#loop_dat.link, up),