osmith has uploaded this change for review. ( 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(-) git pull ssh://gerrit.osmocom.org:29418/osmo-s1gw refs/changes/48/37048/1 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 <osm...@sysmocom.de> Gerrit-CC: fixeria <vyanits...@sysmocom.de> Gerrit-MessageType: newchange