fixeria has submitted this change. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/38786?usp=email )
Change subject: sctp_server: pass MME addr/port to sctp_proxy as opaque data
......................................................................
sctp_server: pass MME addr/port to sctp_proxy as opaque data
This is the first step towards the goal of making the sctp_server
module more generic and abstract from the client module's API.
Change-Id: I1bd5f17d940173c4ec2d8d7a1d48778098008c84
---
M src/sctp_proxy.erl
M src/sctp_server.erl
2 files changed, 25 insertions(+), 14 deletions(-)
Approvals:
fixeria: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
diff --git a/src/sctp_proxy.erl b/src/sctp_proxy.erl
index 6503a9e..72f7980 100644
--- a/src/sctp_proxy.erl
+++ b/src/sctp_proxy.erl
@@ -41,7 +41,8 @@
connected/3,
code_change/4,
terminate/3]).
--export([start_link/3,
+-export([start_link/2,
+ start_link/3,
send_data/2,
shutdown/1]).
@@ -55,9 +56,19 @@
%% public API
%% ------------------------------------------------------------------
--spec start_link(gen_sctp:assoc_id(),
- sctp_client:loc_rem_addr(),
- inet:port_number()) -> gen_statem:start_ret().
+-spec start_link(Aid, {MmeAddr, MmePort}) -> Result
+ when Aid :: gen_sctp:assoc_id(),
+ MmeAddr :: sctp_client:loc_rem_addr(),
+ MmePort :: inet:port_number(),
+ Result :: gen_statem:start_ret().
+start_link(Aid, {MmeAddr, MmePort}) ->
+ start_link(Aid, MmeAddr, MmePort).
+
+-spec start_link(Aid, MmeAddr, MmePort) -> Result
+ when Aid :: gen_sctp:assoc_id(),
+ MmeAddr :: sctp_client:loc_rem_addr(),
+ MmePort :: inet:port_number(),
+ Result :: gen_statem:start_ret().
start_link(Aid, MmeAddr, MmePort) ->
gen_statem:start_link(?MODULE, [Aid, MmeAddr, MmePort], []).
diff --git a/src/sctp_server.erl b/src/sctp_server.erl
index 0b741ad..7722436 100644
--- a/src/sctp_server.erl
+++ b/src/sctp_server.erl
@@ -56,7 +56,7 @@
-record(server_state, {sock :: gen_sctp:sctp_socket(),
clients :: dict:dict(),
- mme_addr_port :: term()
+ priv :: term()
}).
-record(client_state, {addr_port :: addr_port(),
@@ -68,9 +68,9 @@
%% public API
%% ------------------------------------------------------------------
-start_link(BindAddr, BindPort, MmeAddrPort) ->
+start_link(BindAddr, BindPort, Priv) ->
gen_server:start_link({local, ?MODULE}, ?MODULE,
- [BindAddr, BindPort, MmeAddrPort],
+ [BindAddr, BindPort, Priv],
[]).
@@ -86,11 +86,11 @@
%% gen_server API
%% ------------------------------------------------------------------
-init([BindAddrStr, BindPort, MmeAddrPort]) when is_list(BindAddrStr) ->
+init([BindAddrStr, BindPort, Priv]) when is_list(BindAddrStr) ->
{ok, BindAddr} = inet:parse_address(BindAddrStr),
- init([BindAddr, BindPort, MmeAddrPort]);
+ init([BindAddr, BindPort, Priv]);
-init([BindAddr, BindPort, MmeAddrPort]) ->
+init([BindAddr, BindPort, Priv]) ->
process_flag(trap_exit, true),
{ok, Sock} = gen_sctp:open([{ip, BindAddr},
{port, BindPort},
@@ -101,7 +101,7 @@
ok = gen_sctp:listen(Sock, true),
{ok, #server_state{sock = Sock,
clients = dict:new(),
- mme_addr_port = MmeAddrPort}}.
+ priv = Priv}}.
handle_call(Info, From, State) ->
@@ -163,7 +163,7 @@
comm_up ->
?LOG_NOTICE("eNB connection (id=~p, ~p:~p) established", [Aid,
FromAddr, FromPort]),
Clients = client_add(State#server_state.clients, Aid, FromAddr, FromPort,
- State#server_state.mme_addr_port);
+ State#server_state.priv);
shutdown_comp ->
?LOG_NOTICE("eNB connection (id=~p, ~p:~p) closed", [Aid, FromAddr,
FromPort]),
Clients = client_del(State#server_state.clients, Aid);
@@ -200,8 +200,8 @@
%% Add a new client to the list, spawning a proxy process
-client_add(Clients, Aid, FromAddr, FromPort, {MmeAddr, MmePort}) ->
- {ok, Pid} = sctp_proxy:start_link(Aid, MmeAddr, MmePort),
+client_add(Clients, Aid, FromAddr, FromPort, Priv) ->
+ {ok, Pid} = sctp_proxy:start_link(Aid, Priv),
NewClient = #client_state{addr_port = {FromAddr, FromPort}, pid = Pid},
s1gw_metrics:gauge_inc(?S1GW_GAUGE_S1AP_ENB_NUM_SCTP_CONNECTIONS),
dict:store(Aid, NewClient, Clients).
--
To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/38786?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: erlang/osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I1bd5f17d940173c4ec2d8d7a1d48778098008c84
Gerrit-Change-Number: 38786
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>