fixeria has uploaded this change for review.

View Change

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

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

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