lists.osmocom.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
List overview
Download
gerrit-log
June 2024
----- 2025 -----
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
gerrit-log@lists.osmocom.org
1 participants
1566 discussions
Start a n
N
ew thread
[S] Change in ...osmo-s1gw[master]: .gitignore: ignore generated S1AP code
by osmith
osmith has posted comments on this change. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37080?usp=email
) Change subject: .gitignore: ignore generated S1AP code ...................................................................... Patch Set 1: Verified+1 Code-Review+2 (1 comment) Patchset: PS1: created a new "erlang/osmo-s1gw" project, previous one was missing the "erlang/" prefix -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37080?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I89df49e1290f32d2fabbc4ffd9a5767bf0fdac00 Gerrit-Change-Number: 37080 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-Comment-Date: Thu, 06 Jun 2024 08:32:40 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[XL] Change in ...osmo-s1gw[master]: Check-in S1AP ASN.1 definitions (3GPP TS 36.413 v17.6.0)
by osmith
osmith has posted comments on this change. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37079?usp=email
) Change subject: Check-in S1AP ASN.1 definitions (3GPP TS 36.413 v17.6.0) ...................................................................... Patch Set 1: Verified+1 Code-Review+2 (1 comment) Patchset: PS1: created a new "erlang/osmo-s1gw" project, previous one was missing the "erlang/" prefix -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37079?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: Ifda18e71abea29f9bf5dac901f1aae70dab8ff75 Gerrit-Change-Number: 37079 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-Comment-Date: Thu, 06 Jun 2024 08:32:35 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[L] Change in ...osmo-s1gw[master]: Initial SCTP proxy (server/client) implementation
by osmith
osmith has posted comments on this change. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37078?usp=email
) Change subject: Initial SCTP proxy (server/client) implementation ...................................................................... Patch Set 1: Verified+1 Code-Review+2 (1 comment) Patchset: PS1: created a new "erlang/osmo-s1gw" project, previous one was missing the "erlang/" prefix -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37078?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: Ia317f58f7dcbec42930165fdcd42d0ddd23e289c Gerrit-Change-Number: 37078 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-Comment-Date: Thu, 06 Jun 2024 08:32:29 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[S] Change in ...osmo-s1gw[master]: config/sys.config: add default environment params
by osmith
osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37089?usp=email
) Change subject: config/sys.config: add default environment params ...................................................................... config/sys.config: add default environment params Change-Id: Ie5ec9f62d77407152e18ea3c20cf401151fa6aea --- M config/sys.config M src/osmo_s1gw_sup.erl 2 files changed, 22 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/89/37089/1 diff --git a/config/sys.config b/config/sys.config index dcace60..8055631 100644 --- a/config/sys.config +++ b/config/sys.config @@ -1,6 +1,16 @@ %% -*- erlang -*- -[{kernel, +[%% =========================================== + %% application config + %% =========================================== + {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 + ]}, + %% =========================================== + %% kernel config + %% =========================================== + {kernel, [{logger_level, info}, {logger, [{handler, default, logger_std_h, diff --git a/src/osmo_s1gw_sup.erl b/src/osmo_s1gw_sup.erl index a62f266..4c93756 100644 --- a/src/osmo_s1gw_sup.erl +++ b/src/osmo_s1gw_sup.erl @@ -8,9 +8,9 @@ -define(SERVER, ?MODULE). -define(ENV_APP_NAME, osmo_s1gw). --define(ENV_DEFAULT_S1GW_BIND_ADDR, "0.0.0.0"). +-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.0.1"). +-define(ENV_DEFAULT_MME_ADDR, "127.0.2.1"). -define(ENV_DEFAULT_MME_PORT, ?S1AP_PORT). %% ------------------------------------------------------------------ -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37089?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: Ie5ec9f62d77407152e18ea3c20cf401151fa6aea Gerrit-Change-Number: 37089 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 year
1
0
0
0
[M] Change in ...osmo-s1gw[master]: s1ap_proxy: implement patching of E-RAB SETUP REQ/RSP
by osmith
osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37088?usp=email
) Change subject: s1ap_proxy: implement patching of E-RAB SETUP REQ/RSP ...................................................................... s1ap_proxy: implement patching of E-RAB SETUP REQ/RSP Change-Id: I88cb261d93b56a4e0ca06ad1d676d1ac16d115bb --- M src/s1ap_proxy.erl A test/s1ap_proxy_test.erl 2 files changed, 209 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/88/37088/1 diff --git a/src/s1ap_proxy.erl b/src/s1ap_proxy.erl index 62701ef..a78f084 100644 --- a/src/s1ap_proxy.erl +++ b/src/s1ap_proxy.erl @@ -1,17 +1,25 @@ -module(s1ap_proxy). --export([handle_pdu/1]). +-export([handle_pdu/1, + encode_pdu/1, + decode_pdu/1]). + +-include("S1AP-PDU-Descriptions.hrl"). +-include("S1AP-PDU-Contents.hrl"). +-include("S1AP-Containers.hrl"). +-include("S1AP-Constants.hrl"). %% ------------------------------------------------------------------ %% public API %% ------------------------------------------------------------------ %% Process an S1AP PDU -handle_pdu(Data) -> +-spec handle_pdu(binary()) -> binary(). +handle_pdu(Data) when is_binary(Data) -> case decode_pdu(Data) of {ok, Pdu} -> logger:info("S1AP PDU: ~p", [Pdu]), - Data; + handle_pdu(Data, Pdu); {error, {asn1, Error}} -> logger:error("S1AP PDU decoding failed: ~p", [Error]), Data @@ -22,10 +30,111 @@ %% private API %% ------------------------------------------------------------------ +%% Encode an S1AP PDU +-spec encode_pdu(tuple()) -> {ok, binary()} | + {error, {asn1, tuple()}}. +encode_pdu(Pdu) -> + 'S1AP-PDU-Descriptions':encode('S1AP-PDU', Pdu). + + %% Decode an S1AP PDU -spec decode_pdu(binary()) -> {ok, tuple()} | {error, {asn1, tuple()}}. decode_pdu(Data) -> 'S1AP-PDU-Descriptions':decode('S1AP-PDU', Data). + +%% Helper function for handle_pdu/2. +%% Attempt to encode a new (modified) S1AP PDU, +%% return a new binary() on success or Data on error. +handle_pdu_new(Data, NewPdu) -> + case encode_pdu(NewPdu) of + {ok, NewData} -> + NewData; + {error, {asn1, Error}} -> + logger:error("S1AP PDU encoding failed: ~p", [Error]), + Data + end. + + +%% E-RAB SETUP REQUEST +handle_pdu(Data, {Outcome = initiatingMessage, + #'InitiatingMessage'{procedureCode = ?'id-E-RABSetup', + value = Content} = Pdu}) -> + logger:debug("Patching E-RAB SETUP REQUEST"), + IEs = handle_ies(Content#'E-RABSetupRequest'.protocolIEs, + ?'id-E-RABToBeSetupListBearerSUReq'), + NewContent = Content#'E-RABSetupRequest'{protocolIEs = IEs}, + handle_pdu_new(Data, {Outcome, Pdu#'InitiatingMessage'{value = NewContent}}); + +%% E-RAB SETUP RESPONSE +handle_pdu(Data, {Outcome = successfulOutcome, + #'SuccessfulOutcome'{procedureCode = ?'id-E-RABSetup', + value = Content} = Pdu}) -> + logger:debug("Patching E-RAB SETUP RESPONSE"), + IEs = handle_ies(Content#'E-RABSetupResponse'.protocolIEs, + ?'id-E-RABSetupListBearerSURes'), + NewContent = Content#'E-RABSetupResponse'{protocolIEs = IEs}, + handle_pdu_new(Data, {Outcome, Pdu#'SuccessfulOutcome'{value = NewContent}}); + +%% Proxy all other messages unmodified +handle_pdu(Data, _Pdu) -> + Data. + + +%% Handle a single IE (Information Element) +-spec handle_ie(tuple()) -> tuple(). + +%% E-RAB SETUP REQUEST related IEs +handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABToBeSetupListBearerSUReq', + value = Content}) -> + %% This IE contains a list of BearerSUReq, so patch inner IEs + handle_ies(Content, ?'id-E-RABToBeSetupItemBearerSUReq'); + +handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABToBeSetupItemBearerSUReq', + value = Content}) -> + Content#'E-RABToBeSetupItemBearerSUReq'{transportLayerAddress = transp_layer_addr()}; + +%% E-RAB SETUP RESPONSE related IEs +handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABSetupListBearerSURes', + value = Content}) -> + %% This IE contains a list of BearerSURes, so patch inner IEs + handle_ies(Content, ?'id-E-RABSetupItemBearerSURes'); + +handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABSetupItemBearerSURes', + value = Content}) -> + Content#'E-RABSetupItemBearerSURes'{transportLayerAddress = transp_layer_addr()}; + +%% Catch-all variant, which should not be called normally +handle_ie(#'ProtocolIE-Field'{value = Content} = IE) -> + logger:error("[BUG] Unhandled S1AP IE: ~p", [IE]), + Content. + + +%% Iterate over the given list of 'ProtocolIE-Field' IEs, +%% calling function handle_ie/1 for IEs matching the given IEI. +-spec handle_ies(list(), integer()) -> list(). +handle_ies(IEs, IEI) -> + handle_ies([], IEs, IEI). + +handle_ies(Acc, [IE | IEs], IEI) -> + case IE of + #'ProtocolIE-Field'{id = IEI} -> + NewIE = IE#'ProtocolIE-Field'{value = handle_ie(IE)}, + handle_ies([NewIE | Acc], IEs, IEI); + _ -> + handle_ies([IE | Acc], IEs, IEI) + end; + +handle_ies(Acc, [], _) -> + lists:reverse(Acc). + + +%% GTP-U IP address (TransportLayerAddress) to be used while patching +transp_layer_addr() -> + AddrStr = application:get_env(osmo_s1gw, transp_layer_addr, "255.255.255.255"), + {ok, Addr} = inet:parse_address(AddrStr), + %% sadly, there exists inet:ntoa/1, but not inet:aton/1 + list_to_binary(tuple_to_list(Addr)). + %% vim:set ts=4 sw=4 et: diff --git a/test/s1ap_proxy_test.erl b/test/s1ap_proxy_test.erl new file mode 100644 index 0000000..408f468 --- /dev/null +++ b/test/s1ap_proxy_test.erl @@ -0,0 +1,88 @@ +-module(s1ap_proxy_test). + +-include_lib("eunit/include/eunit.hrl"). + +%% ------------------------------------------------------------------ +%% testcases +%% ------------------------------------------------------------------ + +%% S1 SETUP REQUEST +s1_setup_req_pdu() -> + << 16#00, 16#11, 16#00, 16#1a, 16#00, 16#00, 16#02, 16#00, + 16#3b, 16#40, 16#08, 16#00, 16#00, 16#f1, 16#10, 16#00, + 16#00, 16#00, 16#00, 16#00, 16#40, 16#00, 16#07, 16#00, + 16#0c, 16#0e, 16#40, 16#00, 16#f1, 16#10 + >>. + +s1_setup_req_test() -> + OrigData = s1_setup_req_pdu(), + %% Expect the PDU to be proxied unmodified + ?assertEqual(OrigData, s1ap_proxy:handle_pdu(OrigData)). + + +%% E-RAB SETUP REQUEST +e_rab_setup_req_pdu(TLA, TEID) when is_binary(TLA), + is_binary(TEID) -> + << 16#00, 16#05, 16#00, 16#80, 16#9b, 16#00, 16#00, 16#03, + 16#00, 16#00, 16#00, 16#02, 16#00, 16#07, 16#00, 16#08, + 16#00, 16#02, 16#00, 16#09, 16#00, 16#10, 16#00, 16#80, + 16#87, 16#00, 16#00, 16#11, 16#00, 16#80, 16#81, 16#0c, + 16#00, 16#05, 16#04, 16#0f, 16#80, + TLA/bytes, %% transportLayerAddress (IPv4) + TEID/bytes, %% GTP-TEID + 16#72, 16#27, 16#c8, + 16#1a, 16#bc, 16#ec, 16#11, 16#62, 16#54, 16#c1, 16#01, + 16#05, 16#04, 16#03, 16#69, 16#6d, 16#73, 16#05, 16#01, + 16#c0, 16#a8, 16#65, 16#02, 16#5e, 16#02, 16#b3, 16#8c, + 16#58, 16#32, 16#27, 16#54, 16#80, 16#80, 16#21, 16#10, + 16#02, 16#00, 16#00, 16#10, 16#81, 16#06, 16#08, 16#08, + 16#08, 16#08, 16#83, 16#06, 16#08, 16#08, 16#04, 16#04, + 16#00, 16#0d, 16#04, 16#08, 16#08, 16#08, 16#08, 16#00, + 16#0d, 16#04, 16#08, 16#08, 16#04, 16#04, 16#00, 16#03, + 16#10, 16#20, 16#01, 16#48, 16#60, 16#48, 16#60, 16#00, + 16#00, 16#00, 16#00, 16#00, 16#00, 16#00, 16#00, 16#88, + 16#88, 16#00, 16#03, 16#10, 16#20, 16#01, 16#48, 16#60, + 16#48, 16#60, 16#00, 16#00, 16#00, 16#00, 16#00, 16#00, + 16#00, 16#00, 16#88, 16#44, 16#00, 16#0c, 16#04, 16#ac, + 16#16, 16#00, 16#15, 16#00, 16#10, 16#02, 16#05, 16#78 + >>. + +e_rab_setup_req_test() -> + %% Original input data + TEID = << 16#00, 16#00, 16#00, 16#18 >>, + OrigTLA = << 16#ac, 16#16, 16#00, 16#06 >>, + OrigData = e_rab_setup_req_pdu(OrigTLA, TEID), + + %% Expected output data + ExpTLA = << 16#7f, 16#00, 16#00, 16#01 >>, + ExpData = e_rab_setup_req_pdu(ExpTLA, TEID), + + application:set_env(osmo_s1gw, transp_layer_addr, "127.0.0.1"), + ?assertEqual(ExpData, s1ap_proxy:handle_pdu(OrigData)). + + +%% E-RAB SETUP RESPONSE +e_rab_setup_rsp_pdu(TLA, TEID) when is_binary(TLA), + is_binary(TEID) -> + << 16#20, 16#05, 16#00, 16#22, 16#00, 16#00, 16#03, 16#00, + 16#00, 16#40, 16#02, 16#00, 16#07, 16#00, 16#08, 16#40, + 16#02, 16#00, 16#09, 16#00, 16#1c, 16#40, 16#0f, 16#00, + 16#00, 16#27, 16#40, 16#0a, 16#0c, 16#1f, + TLA/bytes, %% transportLayerAddress (IPv4) + TEID/bytes %% GTP-TEID + >>. + +e_rab_setup_rsp_test() -> + %% Original input data + TEID = << 16#6c, 16#05, 16#bf, 16#56 >>, + OrigTLA = << 16#c0, 16#a8, 16#68, 16#a7 >>, + OrigData = e_rab_setup_rsp_pdu(OrigTLA, TEID), + + %% Expected output data + ExpTLA = << 16#7f, 16#00, 16#00, 16#01 >>, + ExpData = e_rab_setup_rsp_pdu(ExpTLA, TEID), + + application:set_env(osmo_s1gw, transp_layer_addr, "127.0.0.1"), + ?assertEqual(ExpData, s1ap_proxy:handle_pdu(OrigData)). + +%% vim:set ts=4 sw=4 et: -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37088?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I88cb261d93b56a4e0ca06ad1d676d1ac16d115bb Gerrit-Change-Number: 37088 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 year
1
0
0
0
[M] Change in ...osmo-s1gw[master]: sctp_client: support explicitly setting local address
by osmith
osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37090?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/erlang/osmo-s1gw refs/changes/90/37090/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/erlang/osmo-s1gw/+/37090?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I96c0cecb855d11066cbb1f7e43f70fb532e473f3 Gerrit-Change-Number: 37090 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 year
1
0
0
0
[S] Change in ...osmo-s1gw[master]: s1ap_proxy: properly patch transportLayerAddress
by osmith
osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37091?usp=email
) Change subject: s1ap_proxy: properly patch transportLayerAddress ...................................................................... s1ap_proxy: properly patch transportLayerAddress Change-Id: Iffcf6842147bcbc665689196c5ded6dfa1a066fa --- M src/s1ap_proxy.erl M test/s1ap_proxy_test.erl 2 files changed, 20 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/91/37091/1 diff --git a/src/s1ap_proxy.erl b/src/s1ap_proxy.erl index a78f084..48f3565 100644 --- a/src/s1ap_proxy.erl +++ b/src/s1ap_proxy.erl @@ -93,7 +93,9 @@ handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABToBeSetupItemBearerSUReq', value = Content}) -> - Content#'E-RABToBeSetupItemBearerSUReq'{transportLayerAddress = transp_layer_addr()}; + %% eNB -> MME direction: we pass our MME facing local address + TLA = transp_layer_addr(mme_loc_addr), + Content#'E-RABToBeSetupItemBearerSUReq'{transportLayerAddress = TLA}; %% E-RAB SETUP RESPONSE related IEs handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABSetupListBearerSURes', @@ -103,7 +105,9 @@ handle_ie(#'ProtocolIE-Field'{id = ?'id-E-RABSetupItemBearerSURes', value = Content}) -> - Content#'E-RABSetupItemBearerSURes'{transportLayerAddress = transp_layer_addr()}; + %% MME -> eNB direction: we pass our eNB facing local address + TLA = transp_layer_addr(s1gw_bind_addr), + Content#'E-RABSetupItemBearerSURes'{transportLayerAddress = TLA}; %% Catch-all variant, which should not be called normally handle_ie(#'ProtocolIE-Field'{value = Content} = IE) -> @@ -131,8 +135,9 @@ %% GTP-U IP address (TransportLayerAddress) to be used while patching -transp_layer_addr() -> - AddrStr = application:get_env(osmo_s1gw, transp_layer_addr, "255.255.255.255"), +-spec transp_layer_addr(atom()) -> binary(). +transp_layer_addr(EnvParam) -> + {ok, AddrStr} = application:get_env(osmo_s1gw, EnvParam), {ok, Addr} = inet:parse_address(AddrStr), %% sadly, there exists inet:ntoa/1, but not inet:aton/1 list_to_binary(tuple_to_list(Addr)). diff --git a/test/s1ap_proxy_test.erl b/test/s1ap_proxy_test.erl index 408f468..0c4bbbf 100644 --- a/test/s1ap_proxy_test.erl +++ b/test/s1ap_proxy_test.erl @@ -57,7 +57,7 @@ ExpTLA = << 16#7f, 16#00, 16#00, 16#01 >>, ExpData = e_rab_setup_req_pdu(ExpTLA, TEID), - application:set_env(osmo_s1gw, transp_layer_addr, "127.0.0.1"), + application:set_env(osmo_s1gw, mme_loc_addr, "127.0.0.1"), ?assertEqual(ExpData, s1ap_proxy:handle_pdu(OrigData)). @@ -82,7 +82,7 @@ ExpTLA = << 16#7f, 16#00, 16#00, 16#01 >>, ExpData = e_rab_setup_rsp_pdu(ExpTLA, TEID), - application:set_env(osmo_s1gw, transp_layer_addr, "127.0.0.1"), + application:set_env(osmo_s1gw, s1gw_bind_addr, "127.0.0.1"), ?assertEqual(ExpData, s1ap_proxy:handle_pdu(OrigData)). %% vim:set ts=4 sw=4 et: -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37091?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: Iffcf6842147bcbc665689196c5ded6dfa1a066fa Gerrit-Change-Number: 37091 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 year
1
0
0
0
[S] Change in ...osmo-s1gw[master]: osmo_s1gw: add main/1 for rebar's escriptize target
by osmith
osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37092?usp=email
) Change subject: osmo_s1gw: add main/1 for rebar's escriptize target ...................................................................... osmo_s1gw: add main/1 for rebar's escriptize target Change-Id: Icb20a3c32fe4236522ccbc83d322b248a074580c --- A src/osmo_s1gw.erl 1 file changed, 18 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/92/37092/1 diff --git a/src/osmo_s1gw.erl b/src/osmo_s1gw.erl new file mode 100644 index 0000000..737fc16 --- /dev/null +++ b/src/osmo_s1gw.erl @@ -0,0 +1,9 @@ +-module(osmo_s1gw). + +-export([main/1]). + +main(_Args) -> + application:ensure_all_started(?MODULE), + timer:sleep(infinity). + +%% vim:set ts=4 sw=4 et: -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37092?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: Icb20a3c32fe4236522ccbc83d322b248a074580c Gerrit-Change-Number: 37092 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 year
1
0
0
0
[S] Change in ...osmo-s1gw[master]: rebar.config: cosmetic: reformat, add vim modeline
by osmith
osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37093?usp=email
) Change subject: rebar.config: cosmetic: reformat, add vim modeline ...................................................................... rebar.config: cosmetic: reformat, add vim modeline Change-Id: If93630d6e0a89512beeb27723bf7a56deb49e9c5 --- M rebar.config 1 file changed, 21 insertions(+), 11 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/93/37093/1 diff --git a/rebar.config b/rebar.config index 57da0ba..d6c6b0a 100644 --- a/rebar.config +++ b/rebar.config @@ -4,20 +4,21 @@ {minimum_otp_vsn, "25.2.3"}. -{deps, [ - {logger_color_formatter, {git, "
https://github.com/rlipscombe/logger_color_formatter.git
", {tag, "0.5.0"}}} -]}. +{deps, [{logger_color_formatter, + {git, "
https://github.com/rlipscombe/logger_color_formatter.git
", {tag, "0.5.0"}}} + ]}. -{plugins, [ - {provider_asn1, ".*", {git, "
https://github.com/knusbaum/provider_asn1.git
", {tag, "0.4.0"}}} -]}. +{plugins, [{provider_asn1, ".*", + {git, "
https://github.com/knusbaum/provider_asn1.git
", {tag, "0.4.0"}}} + ]}. {asn1_args, [{verbose, false}, {encoding, per}]}. {xref_checks, [undefined_function_calls, undefined_functions, - deprecated_function_calls, deprecated_functions]}. + deprecated_function_calls, deprecated_functions]}. -{dialyzer, [ - {plt_extra_apps, [kernel, stdlib, erts, tools, inets, compiler]}, - {warnings, [no_improper_lists]} -]}. +{dialyzer, [{plt_extra_apps, [kernel, stdlib, erts, tools, inets, compiler]}, + {warnings, [no_improper_lists]} + ]}. + +%% vim:set ts=4 sw=4 et: -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37093?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: If93630d6e0a89512beeb27723bf7a56deb49e9c5 Gerrit-Change-Number: 37093 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 year
1
0
0
0
[S] Change in ...osmo-s1gw[master]: rebar.config: add escript and relx parameters
by osmith
osmith has uploaded this change for review. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37094?usp=email
) Change subject: rebar.config: add escript and relx parameters ...................................................................... rebar.config: add escript and relx parameters Change-Id: I204aba4a0fdd678d2e6f5ab588c8c42ef3e44678 --- M rebar.config 1 file changed, 19 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/erlang/osmo-s1gw refs/changes/94/37094/1 diff --git a/rebar.config b/rebar.config index d6c6b0a..db88c7e 100644 --- a/rebar.config +++ b/rebar.config @@ -21,4 +21,14 @@ {warnings, [no_improper_lists]} ]}. +{escript_incl_apps, [osmo_s1gw]}. +{escript_main_app, osmo_s1gw}. +{escript_name, "osmo-s1gw"}. + +{relx, [{release, {"osmo-s1gw", "0.1.0"}, [osmo_s1gw]}, + {sys_config, "./config/sys.config"}, + {dev_mode, true}, + {include_erts, false}, + {extended_start_script, true}]}. + %% vim:set ts=4 sw=4 et: -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/37094?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I204aba4a0fdd678d2e6f5ab588c8c42ef3e44678 Gerrit-Change-Number: 37094 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith(a)sysmocom.de> Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-MessageType: newchange
1 year
1
0
0
0
← Newer
1
...
110
111
112
113
114
115
116
...
157
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
Results per page:
10
25
50
100
200