fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/40546?usp=email )
Change subject: sctp_server: pass conn_info() to the handler ......................................................................
sctp_server: pass conn_info() to the handler
Pass more information about the SCTP connection to the handler. This will be used in a follow-up patch to obtain the eNB's address.
Change-Id: I959cfb2b8eeb93d8c53e0a84fcc4c917ed4aac51 Related: SYS#7307 --- M src/sctp_client.erl M src/sctp_proxy.erl M src/sctp_server.erl 3 files changed, 15 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/46/40546/1
diff --git a/src/sctp_client.erl b/src/sctp_client.erl index bea3c16..30152d2 100644 --- a/src/sctp_client.erl +++ b/src/sctp_client.erl @@ -57,8 +57,8 @@ %% behavior callbacks %% ------------------------------------------------------------------
--callback start_link(Aid, Priv) -> Result - when Aid :: gen_sctp:assoc_id(), +-callback start_link(ConnInfo, Priv) -> Result + when ConnInfo :: sctp_server:conn_info(), Priv :: term(), Result :: {ok, pid()} | term().
diff --git a/src/sctp_proxy.erl b/src/sctp_proxy.erl index e208d95..14c3a03 100644 --- a/src/sctp_proxy.erl +++ b/src/sctp_proxy.erl @@ -57,12 +57,12 @@ %% public API %% ------------------------------------------------------------------
--spec start_link(Aid, ConnCfg) -> Result - when Aid :: gen_sctp:assoc_id(), - ConnCfg :: sctp_client:cfg(), +-spec start_link(ConnInfo, Priv) -> Result + when ConnInfo :: sctp_server:conn_info(), + Priv :: sctp_client:cfg(), Result :: gen_statem:start_ret(). -start_link(Aid, ConnCfg) -> - gen_statem:start_link(?MODULE, [Aid, ConnCfg], []). +start_link(ConnInfo, Priv) -> + gen_statem:start_link(?MODULE, [ConnInfo, Priv], []).
-spec send_data(pid(), binary()) -> ok. @@ -84,10 +84,10 @@ %% gen_statem API %% ------------------------------------------------------------------
-init([Aid, ConnCfg]) -> +init([ConnInfo, ConnCfg]) -> {ok, Pid} = s1ap_proxy:start_link(), {ok, connecting, - #{enb_aid => Aid, + #{enb_aid => maps:get(aid, ConnInfo), conn_cfg => ConnCfg, tx_queue => [], handler => Pid}}. diff --git a/src/sctp_server.erl b/src/sctp_server.erl index 7456d78..1eeb075 100644 --- a/src/sctp_server.erl +++ b/src/sctp_server.erl @@ -68,7 +68,8 @@ priv => term() }.
--export_type([cfg/0]). +-export_type([cfg/0, + conn_info/0]).
-record(client_state, {addr_port :: addr_port(), @@ -249,7 +250,10 @@ #server_state{clients = Clients, handler = Handler, priv = Priv} = S) -> - {ok, Pid} = Handler:start_link(Aid, Priv), + ConnInfo = #{aid => Aid, + addr => FromAddr, + port => FromPort}, + {ok, Pid} = Handler:start_link(ConnInfo, Priv), s1gw_metrics:gauge_inc(?S1GW_GAUGE_S1AP_ENB_NUM_SCTP_CONNECTIONS), NewClient = #client_state{addr_port = {FromAddr, FromPort}, pid = Pid}, S#server_state{clients = dict:store(Aid, NewClient, Clients)}.