osmith has submitted this change. (
https://gerrit.osmocom.org/c/osmo-s1gw/+/37048?usp=email )
Change subject: sctp_client: support explicitly setting local address
......................................................................
sctp_client: support explicitly setting local address
Change-Id: I96c0cecb855d11066cbb1f7e43f70fb532e473f3
---
M config/sys.config
M src/osmo_s1gw_sup.erl
M src/sctp_client.erl
M src/sctp_proxy.erl
4 files changed, 44 insertions(+), 20 deletions(-)
Approvals:
osmith: Looks good to me, approved; Verified
diff --git a/config/sys.config b/config/sys.config
index 8055631..6904d65 100644
--- a/config/sys.config
+++ b/config/sys.config
@@ -1,15 +1,23 @@
%% -*- erlang -*-
-[%% ===========================================
+[%% ================================================================================
%% application config
- %% ===========================================
+ %%
+ %% eNB S1GW
+ %% +-----+ +----------------+
+ %% | ... | --> | s1gw_bind_addr | MME
+ %% +-----+ +----------------+ +-----------------+
+ %% | mme_loc_addr | --> | mme_rem_addr |
+ %% +----------------+ +-----------------+
+ %% ================================================================================
{osmo_s1gw,
[{s1gw_bind_addr, "127.0.1.1"}, %% S1GW bind address for incoming eNB
connections
- {mme_addr, "127.0.2.1"} %% MME address for outgoing connections
+ {mme_loc_addr, "127.0.2.1"}, %% local address for outgoing connections to
the MME
+ {mme_rem_addr, "127.0.2.10"} %% remote address for outgoing connections to
the MME
]},
- %% ===========================================
+ %% ================================================================================
%% kernel config
- %% ===========================================
+ %% ================================================================================
{kernel,
[{logger_level, info},
{logger,
diff --git a/src/osmo_s1gw_sup.erl b/src/osmo_s1gw_sup.erl
index 4c93756..87ec9bf 100644
--- a/src/osmo_s1gw_sup.erl
+++ b/src/osmo_s1gw_sup.erl
@@ -10,8 +10,9 @@
-define(ENV_APP_NAME, osmo_s1gw).
-define(ENV_DEFAULT_S1GW_BIND_ADDR, "127.0.1.1").
-define(ENV_DEFAULT_S1GW_BIND_PORT, ?S1AP_PORT).
--define(ENV_DEFAULT_MME_ADDR, "127.0.2.1").
--define(ENV_DEFAULT_MME_PORT, ?S1AP_PORT).
+-define(ENV_DEFAULT_MME_LOC_ADDR, "127.0.2.1").
+-define(ENV_DEFAULT_MME_REM_ADDR, "127.0.2.10").
+-define(ENV_DEFAULT_MME_REM_PORT, ?S1AP_PORT).
%% ------------------------------------------------------------------
%% supervisor API
@@ -24,11 +25,12 @@
init([]) ->
S1GWBindAddr = get_env(s1gw_bind_addr, ?ENV_DEFAULT_S1GW_BIND_ADDR),
S1GWBindPort = get_env(s1gw_bind_port, ?ENV_DEFAULT_S1GW_BIND_PORT),
- MmeAddr = get_env(mme_addr, ?ENV_DEFAULT_MME_ADDR),
- MmePort = get_env(mme_port, ?ENV_DEFAULT_MME_PORT),
+ MmeLocAddr = get_env(mme_loc_addr, ?ENV_DEFAULT_MME_LOC_ADDR),
+ MmeRemAddr = get_env(mme_rem_addr, ?ENV_DEFAULT_MME_REM_ADDR),
+ MmeRemPort = get_env(mme_rem_port, ?ENV_DEFAULT_MME_REM_PORT),
SctpServer = {sctp_server, {sctp_server, start_link,
[S1GWBindAddr, S1GWBindPort,
- {MmeAddr, MmePort}]},
+ {{MmeLocAddr, MmeRemAddr}, MmeRemPort}]},
permanent,
5000,
worker,
diff --git a/src/sctp_client.erl b/src/sctp_client.erl
index 908afcd..fe96f30 100644
--- a/src/sctp_client.erl
+++ b/src/sctp_client.erl
@@ -16,15 +16,24 @@
%% ------------------------------------------------------------------
connect() ->
- connect(localhost).
+ connect({any, localhost}).
-connect(Host) ->
- connect(Host, ?S1AP_PORT).
+connect(LocRemAddr) ->
+ connect(LocRemAddr, ?S1AP_PORT).
-connect(Host, Port) ->
- {ok, Sock} = gen_sctp:open([{type, seqpacket},
+connect({LocAddrStr, RemAddr}, Port) when is_list(LocAddrStr) ->
+ {ok, LocAddr} = inet:parse_address(LocAddrStr),
+ connect({LocAddr, RemAddr}, Port);
+
+connect({LocAddr, RemAddrStr}, Port) when is_list(RemAddrStr) ->
+ {ok, RemAddr} = inet:parse_address(RemAddrStr),
+ connect({LocAddr, RemAddr}, Port);
+
+connect({LocAddr, RemAddr}, Port) ->
+ {ok, Sock} = gen_sctp:open([{ip, LocAddr},
+ {type, seqpacket},
{active, true}]),
- gen_sctp:connect_init(Sock, Host, Port, []),
+ gen_sctp:connect_init(Sock, RemAddr, Port, []),
{ok, Sock}.
diff --git a/src/sctp_proxy.erl b/src/sctp_proxy.erl
index 43cb081..2cc6165 100644
--- a/src/sctp_proxy.erl
+++ b/src/sctp_proxy.erl
@@ -34,10 +34,6 @@
%% gen_statem API
%% ------------------------------------------------------------------
-init([Aid, MmeAddrStr, MmePort]) when is_list(MmeAddrStr) ->
- {ok, MmeAddr} = inet:parse_address(MmeAddrStr),
- init([Aid, MmeAddr, MmePort]);
-
init([Aid, MmeAddr, MmePort]) ->
{ok, connecting,
#{enb_aid => Aid,
--
To view, visit
https://gerrit.osmocom.org/c/osmo-s1gw/+/37048?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-s1gw
Gerrit-Branch: master
Gerrit-Change-Id: I96c0cecb855d11066cbb1f7e43f70fb532e473f3
Gerrit-Change-Number: 37048
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: merged