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
September
August
July
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
September 2025
----- 2025 -----
September 2025
August 2025
July 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
1000 discussions
Start a n
N
ew thread
[M] Change in ...osmo-s1gw[master]: [REST] OpenAPI specification skeleton
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change by fixeria. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41096?usp=email
) Change subject: [REST] OpenAPI specification skeleton ...................................................................... Patch Set 7: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41096?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I84e6ef5cc67cd26b11f7bed8510420e43e18c69b Gerrit-Change-Number: 41096 Gerrit-PatchSet: 7 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 15 Sep 2025 13:50:51 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
6 days, 9 hours
1
0
0
0
[XS] Change in ...osmo-s1gw[master]: debian: add osmo-s1gw.install
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change by fixeria. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41110?usp=email
) Change subject: debian: add osmo-s1gw.install ...................................................................... Patch Set 3: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41110?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: Ia396351a73b665cbb9927b525e01ab451a6b0f78 Gerrit-Change-Number: 41110 Gerrit-PatchSet: 3 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 15 Sep 2025 13:50:28 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
6 days, 9 hours
1
0
0
0
[XS] Change in ...osmo-s1gw[master]: contrib/generate_build_dep.sh: pass '-n' to mv
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change by fixeria. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41109?usp=email
) Change subject: contrib/generate_build_dep.sh: pass '-n' to mv ...................................................................... Patch Set 3: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41109?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I9a95afcac54dec9684f34224a912574bb387e96c Gerrit-Change-Number: 41109 Gerrit-PatchSet: 3 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 15 Sep 2025 13:50:19 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
6 days, 9 hours
1
0
0
0
[S] Change in ...osmo-s1gw[master]: enb_registry: fetch_enb_list/0: return sorted list
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change by fixeria. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41102?usp=email
) Change subject: enb_registry: fetch_enb_list/0: return sorted list ...................................................................... Patch Set 5: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41102?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I51cc55982dda5f88e967b63433fb7e5be292aca1 Gerrit-Change-Number: 41102 Gerrit-PatchSet: 5 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 15 Sep 2025 13:50:07 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
6 days, 9 hours
1
0
0
0
[M] Change in ...osmo-s1gw[master]: enb_registry: track eNB uptime
by laforge
Attention is currently required from: fixeria, jolly. laforge has posted comments on this change by fixeria. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41035?usp=email
) Change subject: enb_registry: track eNB uptime ...................................................................... Patch Set 5: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41035?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I94fd06e559ae52d4d9c8b22e618e48dff718b53c Gerrit-Change-Number: 41035 Gerrit-PatchSet: 5 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: jolly <andreas(a)eversberg.eu> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 15 Sep 2025 13:49:57 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
6 days, 9 hours
1
0
0
0
[L] Change in ...osmo-s1gw[master]: enb_registry: new module
by laforge
Attention is currently required from: fixeria. laforge has posted comments on this change by fixeria. (
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41034?usp=email
) Change subject: enb_registry: new module ...................................................................... Patch Set 5: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/41034?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: erlang/osmo-s1gw Gerrit-Branch: master Gerrit-Change-Id: I77a5a750ca6342da3a99926a44926b3973ab19c4 Gerrit-Change-Number: 41034 Gerrit-PatchSet: 5 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 15 Sep 2025 13:49:39 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
6 days, 9 hours
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: mme: Store and check {mme,enb}_ue_id over S1AP
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41084?usp=email
) Change subject: mme: Store and check {mme,enb}_ue_id over S1AP ...................................................................... mme: Store and check {mme,enb}_ue_id over S1AP * Generate a different enb_ue_id based on imsi_suffix, and store it during startup of ConnHdlr. * Validate the MME sends the expected message to the expected enb_ue_id. * Store the mme_ue_id and validate also that MME keeps using it. A new procedure is added to S1AP_Emulation, similar to what already exists in NGAP_Emulation, to obtain the mme_ue_id allocated by the peer. This is needed because upon rx of DL NAS Transport messages we only receive the upper layer NAS decoded in the Connhdlr, so we can't store and track the MME ID early enough. Change-Id: I62902db3851f48ce9f80cb1cc84797735c0091de --- M library/S1AP_Emulation.ttcn M library/s1ap/S1AP_Templates.ttcn M mme/ConnHdlr.ttcn M mme/MME_Tests.ttcn 4 files changed, 138 insertions(+), 33 deletions(-) Approvals: osmith: Looks good to me, but someone else must approve pespin: Looks good to me, approved laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/library/S1AP_Emulation.ttcn b/library/S1AP_Emulation.ttcn index b3e7731..9132ef3 100644 --- a/library/S1AP_Emulation.ttcn +++ b/library/S1AP_Emulation.ttcn @@ -526,6 +526,11 @@ f_create_expect_proc(procedureCode, vc_conn); S1AP_PROC.reply(S1APEM_register_proc:{procedureCode, vc_conn}) to vc_conn; } + [] S1AP_PROC.getcall(S1APEM_obtain_mme_ue_id:{}) -> sender vc_conn { + var integer i := f_assoc_id_by_comp(vc_conn); + mme_id := S1apAssociationTable[i].mme_ue_s1ap_id; + S1AP_PROC.reply(S1APEM_obtain_mme_ue_id:{} value mme_id) to vc_conn; + } [] S1AP_PROC.getcall(S1APEM_derive_nas_token:{?, ?, -}) -> param(kasme, vc_conn) { var integer assoc_id := f_assoc_id_by_comp(vc_conn); var OCT32 nas_token := f_kdf_nas_token(kasme, S1apAssociationTable[assoc_id].nus.tx_count) @@ -553,11 +558,13 @@ signature S1APEM_register(in MME_UE_S1AP_ID mme_id, in ENB_UE_S1AP_ID enb_id, in S1AP_ConnHdlr hdlr); signature S1APEM_register_proc(in integer procedureCode, in S1AP_ConnHdlr hdlr); +signature S1APEM_obtain_mme_ue_id() return MME_UE_S1AP_ID; signature S1APEM_derive_nas_token(in octetstring kasme, in S1AP_ConnHdlr hdlr, out OCT32 nas_token); type port S1APEM_PROC_PT procedure { inout S1APEM_register; inout S1APEM_register_proc; + inout S1APEM_obtain_mme_ue_id; inout S1APEM_derive_nas_token; } with { extension "internal" }; @@ -658,6 +665,19 @@ log(procedureCode); } +/* ConnHdlr function to obtain MME_UD_ID internally stored in association table. + * This is needed because we don't receive S1AP layer of DownlinkNasTransport in + * ConnHdlr from Emulation, so there's no direct way to obtain it early during + * registration procedure. */ +function f_s1apem_obtain_mme_ue_id() runs on S1AP_ConnHdlr return MME_UE_S1AP_ID { + var MME_UE_S1AP_ID mme_ue_id; + S1AP_PROC.call(S1APEM_obtain_mme_ue_id:{}) { + [] S1AP_PROC.getreply(S1APEM_obtain_mme_ue_id:{}) -> value mme_ue_id { + return mme_ue_id; + } + } +} + /* Derive NAS Token (and post-increment ul_count): */ function f_s1apem_derive_nas_token(in octetstring kasme) runs on S1AP_ConnHdlr return OCT32 { diff --git a/library/s1ap/S1AP_Templates.ttcn b/library/s1ap/S1AP_Templates.ttcn index 8c89c75..8151982 100644 --- a/library/s1ap/S1AP_Templates.ttcn +++ b/library/s1ap/S1AP_Templates.ttcn @@ -3046,4 +3046,42 @@ iE_Extensions := * }; +/* 9.2.3.18 UE S1AP pair */ +template (value) UE_S1AP_ID_pair +ts_S1AP_UE_ID_pair(template (value) MME_UE_S1AP_ID mme_ue_id, + template (value) ENB_UE_S1AP_ID enb_ue_id) := { + mME_UE_S1AP_ID := mme_ue_id, + eNB_UE_S1AP_ID := enb_ue_id, + iE_Extensions := omit +}; + +template (present) UE_S1AP_ID_pair +tr_S1AP_UE_ID_pair(template (present) MME_UE_S1AP_ID mme_ue_id := ?, + template (present) ENB_UE_S1AP_ID enb_ue_id := ?) := { + mME_UE_S1AP_ID := mme_ue_id, + eNB_UE_S1AP_ID := enb_ue_id, + iE_Extensions := * +}; + +/* CHOICE UE S1AP IDs */ +template (value) UE_S1AP_IDs +ts_S1AP_UE_IDs_pair(template (value) MME_UE_S1AP_ID mme_ue_id, + template (value) ENB_UE_S1AP_ID enb_ue_id) := { + uE_S1AP_ID_pair := ts_S1AP_UE_ID_pair(mme_ue_id, enb_ue_id) +}; +template (present) UE_S1AP_IDs +tr_S1AP_UE_IDs_pair(template (present) MME_UE_S1AP_ID mme_ue_id := ?, + template (present) ENB_UE_S1AP_ID enb_ue_id := ?) := { + uE_S1AP_ID_pair := tr_S1AP_UE_ID_pair(mme_ue_id, enb_ue_id) +}; + +template (value) UE_S1AP_IDs +ts_S1AP_UE_IDs_mme(template (value) MME_UE_S1AP_ID mme_ue_id) := { + mME_UE_S1AP_ID := mme_ue_id +}; +template (present) UE_S1AP_IDs +tr_S1AP_UE_IDs_mme(template (present) MME_UE_S1AP_ID mme_ue_id := ?) := { + mME_UE_S1AP_ID := mme_ue_id +}; + } diff --git a/mme/ConnHdlr.ttcn b/mme/ConnHdlr.ttcn index 8f4d972..4e94cbf 100644 --- a/mme/ConnHdlr.ttcn +++ b/mme/ConnHdlr.ttcn @@ -108,6 +108,9 @@ NAS_EPS_Types.GUTI guti optional, octetstring kasme optional, + ENB_UE_S1AP_ID enb_ue_id, + MME_UE_S1AP_ID mme_ue_id optional, + /* TEI (Control) local side, S11 (SGW) */ OCT4 s11_teic_local, /* TEI (Control) remote side, S11 (SGW) */ @@ -297,9 +300,8 @@ private altstep as_s1ap_handle_IntialCtxSetupReq_Attach_Accept() runs on ConnHdlr { var S1AP_PDU rx_msg; var PDU_NAS_EPS rx_nas; - [] S1AP.receive(tr_S1AP_IntialCtxSetupReq) -> value rx_msg { - var template (omit) MME_UE_S1AP_ID mme_ue_id := f_S1AP_get_MME_UE_S1AP_ID(rx_msg); - var template (omit) ENB_UE_S1AP_ID enb_ue_id := f_S1AP_get_ENB_UE_S1AP_ID(rx_msg); + [] S1AP.receive(tr_S1AP_IntialCtxSetupReq(g_pars.ue_pars.mme_ue_id, + g_pars.ue_pars.enb_ue_id)) -> value rx_msg { var template (value) E_RABSetupItemCtxtSURes rab_setup_it; var template (value) E_RABSetupListCtxtSURes rab_setup_items; var octetstring esm_enc; @@ -317,7 +319,9 @@ tla := oct2bit(f_inet_addr(g_pars.enb_pars[g_pars.mme_idx].gtp1u_local_ip)), gtp_teid := '00000002'O); rab_setup_items := ts_S1AP_RABSetupListCtxtSURes(rab_setup_it); - S1AP.send(ts_S1AP_InitialCtxSetupResp(valueof(mme_ue_id), valueof(enb_ue_id), rab_setup_items)); + S1AP.send(ts_S1AP_InitialCtxSetupResp(g_pars.ue_pars.mme_ue_id, + g_pars.ue_pars.enb_ue_id, + rab_setup_items)); nas := ts_NAS_ActDefEpsBearCtxAck(int2bit(g_pars.ue_pars.bearer.ebi, 4), '00000000'B, omit); esm_enc := enc_PDU_NAS_EPS(valueof(nas)); @@ -334,14 +338,18 @@ altstep as_s1ap_handle_IntialCtxSetupReq_TAU_Accept() runs on ConnHdlr { var S1AP_PDU rx_msg; var PDU_NAS_EPS rx_nas; - [] S1AP.receive(tr_S1AP_IntialCtxSetupReq) -> value rx_msg { + [] S1AP.receive(tr_S1AP_IntialCtxSetupReq(f_tr_s1ap_mme_ue_id(), + g_pars.ue_pars.enb_ue_id)) -> value rx_msg { /* 3GPP TS 23.401 D.3.6 step 22: */ - var template (omit) MME_UE_S1AP_ID mme_ue_id := f_S1AP_get_MME_UE_S1AP_ID(rx_msg); - var template (omit) ENB_UE_S1AP_ID enb_ue_id := f_S1AP_get_ENB_UE_S1AP_ID(rx_msg); var template (value) E_RABSetupItemCtxtSURes rab_setup_it; var template (value) E_RABSetupListCtxtSURes rab_setup_items; var S1APEM_Config cfg; + if (not ispresent(g_pars.ue_pars.mme_ue_id)) { + /* After receiving IntialCtxSetupReq above, the MME-UE-Id is know, update it: */ + g_pars.ue_pars.mme_ue_id := valueof(f_S1AP_get_MME_UE_S1AP_ID(rx_msg)); + } + S1AP.receive(tr_PDU_NAS_EPS_TrackingAreaUpdateAccept)-> value rx_nas; /* Configure integrity protection: */ @@ -354,7 +362,9 @@ tla := oct2bit(f_inet_addr(g_pars.enb_pars[g_pars.mme_idx].gtp1u_local_ip)), gtp_teid := '00000002'O); rab_setup_items := ts_S1AP_RABSetupListCtxtSURes(rab_setup_it); - S1AP.send(ts_S1AP_InitialCtxSetupResp(valueof(mme_ue_id), valueof(enb_ue_id), rab_setup_items)); + S1AP.send(ts_S1AP_InitialCtxSetupResp(g_pars.ue_pars.mme_ue_id, + g_pars.ue_pars.enb_ue_id, + rab_setup_items)); /* 3GPP TS 23.401 D.3.6 step 23: */ /* Integrity Protection and Ciphering implemented by S1AP_Emulation: */ @@ -378,41 +388,70 @@ altstep as_s1ap_handle_UeContextModificationReq(template CSFallbackIndicator csfb_ind := omit) runs on ConnHdlr { var S1AP_PDU rx_msg; var PDU_NAS_EPS rx_nas; - [] S1AP.receive(tr_S1AP_UeContextModificationReq(?, ?, + [] S1AP.receive(tr_S1AP_UeContextModificationReq(g_pars.ue_pars.mme_ue_id, + g_pars.ue_pars.enb_ue_id, csfb_ind := cs_fallback_required, registered_lai := f_SGsAP_LAI_to_S1AP_LAI(g_pars.sgsap_pars.lai))) -> value rx_msg { - var template MME_UE_S1AP_ID mme_ue_id; - var template ENB_UE_S1AP_ID enb_ue_id; - - mme_ue_id := f_S1AP_get_MME_UE_S1AP_ID(rx_msg); - enb_ue_id := f_S1AP_get_ENB_UE_S1AP_ID(rx_msg); - - S1AP.send(ts_S1AP_UeContextModificationResp(mme_ue_id, enb_ue_id)); + S1AP.send(ts_S1AP_UeContextModificationResp(g_pars.ue_pars.mme_ue_id, + g_pars.ue_pars.enb_ue_id)); } [] S1AP.receive(PDU_NAS_EPS:?) -> value rx_nas { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Rx Unexpected NAS PDU msg: ", rx_nas)); } } +/* Expect a given mme_ue_id for ConnHdlr if already known */ +private function f_tr_s1ap_mme_ue_id() +runs on ConnHdlr return template (present) MME_UE_S1AP_ID +{ + var template (present) MME_UE_S1AP_ID tpl; + if (ispresent(g_pars.ue_pars.mme_ue_id)) { + tpl := g_pars.ue_pars.mme_ue_id; + } else { + tpl := ? + } + return tpl; +} + +/* 3GPP TS 36.413, section 9.1.4.6), may identify the context by either an + * uE_S1AP_ID_pair (MME_UE_S1AP_ID and ENB_UE_S1AP_ID) or an MME_UE_S1AP_ID alone. */ +private function f_tr_s1ap_UeContextReleaseCmd_ue_ids() +runs on ConnHdlr return template (present) UE_S1AP_IDs +{ + var template (present) UE_S1AP_IDs tpl; + /* If we receive a NAS payload with a reject to our InitialUE message + * followed by a UEContextReleaseCommand, we have no time to actually + * obtain the mme_ue_id from the S1AP_Emulation since it gets freed during + * rx of UECtxReleaseCmd. + * Under that scenario, allow any mme_ue_id */ + if (ispresent(g_pars.ue_pars.mme_ue_id)) { + tpl := ( + tr_S1AP_UE_IDs_pair(g_pars.ue_pars.mme_ue_id, + g_pars.ue_pars.enb_ue_id), + tr_S1AP_UE_IDs_mme(g_pars.ue_pars.mme_ue_id) + ); + } else { + tpl := ( + tr_S1AP_UE_IDs_pair(?, + g_pars.ue_pars.enb_ue_id), + tr_S1AP_UE_IDs_mme(?) + ); + } + return tpl; +} + altstep as_s1ap_handle_UeContextReleaseCmd(template S1AP_IEs.Cause cause := ?) runs on ConnHdlr { var S1AP_PDU rx_msg; var PDU_NAS_EPS rx_nas; - [] S1AP.receive(tr_S1AP_UeContextReleaseCmd(?, cause)) -> value rx_msg { - var template MME_UE_S1AP_ID mme_ue_id; - var template ENB_UE_S1AP_ID enb_ue_id; - if (not ispresent(rx_msg.initiatingMessage.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair)) { - /* TODO: The UE CONTEXT RELEASE COMMAND (see also: 3GPP TS 36.413, section 9.1.4.6), may identify the - * context by either an uE_S1AP_ID_pair (MME_UE_S1AP_ID and ENB_UE_S1AP_ID) or an MME_UE_S1AP_ID alone. - * The latter case is not implemented here yet. */ - Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("complete implementation of UeContextReleaseCmd handling")); - return; - } - mme_ue_id := rx_msg.initiatingMessage.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair.mME_UE_S1AP_ID; - enb_ue_id := rx_msg.initiatingMessage.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair.eNB_UE_S1AP_ID; - - S1AP.send(ts_S1AP_UeContextReleaseCompl(mme_ue_id, enb_ue_id)); + [] S1AP.receive(tr_S1AP_UeContextReleaseCmd(f_tr_s1ap_UeContextReleaseCmd_ue_ids(), + cause)) -> value rx_msg { + S1AP.send(ts_S1AP_UeContextReleaseCompl(f_S1AP_get_MME_UE_S1AP_ID(rx_msg), + g_pars.ue_pars.enb_ue_id)); } + [] S1AP.receive(S1AP_PDU:?) -> value rx_msg { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Rx Unexpected S1AP PDU msg: ", rx_msg)); + } [] S1AP.receive(PDU_NAS_EPS:?) -> value rx_nas { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("Rx Unexpected NAS PDU msg: ", rx_nas)); } @@ -741,7 +780,8 @@ ue_net_cap := c_NAS_defaultUeNetCap, esm_enc := enc_PDU_NAS_EPS(valueof(nas_esm))); var template (value) S1AP_PDU tx; - tx := ts_S1AP_InitialUE(p_eNB_value := 0, p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_emm)), + tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, + p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_emm)), p_tAI := ts_enb_S1AP_TAI(g_pars.enb_pars[g_pars.mme_idx]), p_eUTRAN_CGI := ts_enb_S1AP_CGI(g_pars.enb_pars[g_pars.mme_idx]), p_rrcCause := mo_Signalling); @@ -768,6 +808,9 @@ } } + /* After receiving DL NAS Transport above, the MME-UE-Id became known in S1AP_Emulation: */ + g_pars.ue_pars.mme_ue_id := f_s1apem_obtain_mme_ue_id(); + /* We now expect the MME to send a Create Session Request to the SGW-C */ f_gtp2_register_udmsg('20'O); T.start; diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn index 834c411..d4cecdc 100644 --- a/mme/MME_Tests.ttcn +++ b/mme/MME_Tests.ttcn @@ -212,6 +212,8 @@ ue_ip := "192.168.123.50", guti := omit, kasme := omit, + enb_ue_id := imsi_suffix, + mme_ue_id := omit, s11_teic_local := '00000000'O, s11_teic_remote := omit, s5c_teic_local := '00000000'O, @@ -610,7 +612,8 @@ var EPS_MobileIdentityLV old_guti := valueof(ts_EPS_MobileId_GUTI(mcc_mnc, '0001'O, '01'O, 'AABBCCDD'O)); nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti, g_pars.kset_id); - tx := ts_S1AP_InitialUE(p_eNB_value := 0, p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), + tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, + p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), p_tAI := ts_enb_S1AP_TAI(g_pars.enb_pars[g_pars.mme_idx]), p_eUTRAN_CGI := ts_enb_S1AP_CGI(g_pars.enb_pars[g_pars.mme_idx]), p_rrcCause := mo_Signalling); @@ -718,7 +721,8 @@ ts_NonceTV('12345678'O), ts_CipheringKeySequenceNumberTV('000'B), ue_net_cap := ue_net_cap); - tx := ts_S1AP_InitialUE(p_eNB_value := 0, p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), + tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, + p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), p_tAI := ts_enb_S1AP_TAI(g_pars.enb_pars[g_pars.mme_idx]), p_eUTRAN_CGI := ts_enb_S1AP_CGI(g_pars.enb_pars[g_pars.mme_idx]), p_rrcCause := mo_Signalling); -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41084?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I62902db3851f48ce9f80cb1cc84797735c0091de Gerrit-Change-Number: 41084 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
6 days, 9 hours
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: mme: Fix implementation of TC_sgsap_alert*
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41086?usp=email
) Change subject: mme: Fix implementation of TC_sgsap_alert* ...................................................................... mme: Fix implementation of TC_sgsap_alert* Change-Id: I717c6f153ae77874170bf03e7a6c7bb628d12dba --- M mme/ConnHdlr.ttcn M mme/MME_Tests_SGsAP.ttcn 2 files changed, 35 insertions(+), 17 deletions(-) Approvals: pespin: Looks good to me, approved laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve diff --git a/mme/ConnHdlr.ttcn b/mme/ConnHdlr.ttcn index 90e4366..ab97983 100644 --- a/mme/ConnHdlr.ttcn +++ b/mme/ConnHdlr.ttcn @@ -1122,20 +1122,20 @@ setverdict(pass); } [exp_success] SGsAP.receive(tr_SGsAP_PAGING_REJ(g_pars.ue_pars.imsi, ?)) { - setverdict(fail, "Received unexpected PAGING REJECT"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received unexpected PAGING REJECT"); } /* we expect failure */ [not exp_success] SGsAP.receive(tr_SGsAP_SERVICE_REQ(g_pars.ue_pars.imsi, serv_ind, ?)) { - setverdict(fail, "Received SERVICE REQ waiting for PAGING REJECT"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received SERVICE REQ waiting for PAGING REJECT"); } [not exp_success] SGsAP.receive(tr_SGsAP_PAGING_REJ(g_pars.ue_pars.imsi, exp_cause)) { setverdict(pass); } [not exp_success] SGsAP.receive(tr_SGsAP_PAGING_REJ(g_pars.ue_pars.imsi, ?)) { - setverdict(fail, "Received unexpected PAGING REJECT cause"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received unexpected PAGING REJECT cause"); } [] SGsAP.receive { - setverdict(fail, "Received unexpected SGsAP"); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Received unexpected SGsAP"); } } } diff --git a/mme/MME_Tests_SGsAP.ttcn b/mme/MME_Tests_SGsAP.ttcn index a662c13..f028316 100644 --- a/mme/MME_Tests_SGsAP.ttcn +++ b/mme/MME_Tests_SGsAP.ttcn @@ -1,6 +1,6 @@ module MME_Tests_SGsAP { -/* Osmocom MME test suite in in TTCN-3, SGsAP related procedures (3GPP TS 23.272) +/* Osmocom MME test suite in in TTCN-3, SGsAP related procedures (3GPP TS 29.118, 3GPP TS 23.272) * (C) 2019 Harald Welte <laforge(a)gnumonks.org> * All rights reserved. * @@ -16,10 +16,13 @@ import from General_Types all; import from Osmocom_Types all; +import from Misc_Helpers all; import from L3_Templates all; import from DNS_Helpers all; import from MME_Tests all; +import from NAS_EPS_Templates all; + import from ConnHdlr all; /* performa SGs reset procedure */ @@ -97,17 +100,32 @@ /* Send ALERT-REQ to MME; perform S1AP activity; expect ALERT-ACK on SGs */ private function f_TC_sgsap_alert() runs on ConnHdlr { - /* TODO: register subscriber on S1 */ + f_attach('010'B /*= Combined EPS IMSI Attach*/, exp_sgsap_lu := true); f_sgsap_alert(omit); - /* TOOD: do something on S1 triggering UE ACT IND */ - SGsAP.receive(tr_SGsAP_UE_ACT_IND(g_pars.ue_pars.imsi)); + + /* Do something on S1 triggering UE ACT IND. non-combined TAU shouldn't + * trigger a non-EPS-related procedure and hence a SGsAP-UE-ACTIVITY-IND + * should be sent: */ + f_tau(c_EPS_UPD_TYPE_TA_UPD_PERIODIC, exp_sgsap_lu := false); + + timer T := 5.0; + T.start; + alt { + [] SGsAP.receive(tr_SGsAP_UE_ACT_IND(g_pars.ue_pars.imsi)) { + setverdict(pass); + } + [] T.timeout { + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, + log2str("Rx no SGsAP-UE-ACTIVITY-INDICATION from MME!")); + } + }; } testcase TC_sgsap_alert() runs on MTC_CT { - var ConnHdlrPars pars; - var ConnHdlr vc_conn; - f_init(1005, init_sgsap := true); - pars := f_init_pars(ue_idx := 0); - vc_conn := f_start_handler_with_pars(refers(f_TC_sgsap_alert), pars); + f_init(1005, init_diameter := true, init_gtpv2c_s11 := true, init_sgsap := true); + f_s1ap_setup(0); + + var ConnHdlrPars pars := f_init_pars(ue_idx := 0); + var ConnHdlr vc_conn := f_start_handler_with_pars(refers(f_TC_sgsap_alert), pars); vc_conn.done; } @@ -117,11 +135,11 @@ f_sgsap_alert(IMSI_unknown); } testcase TC_sgsap_alert_rej() runs on MTC_CT { - var ConnHdlrPars pars; - var ConnHdlr vc_conn; f_init(1006, init_sgsap := true); - pars := f_init_pars(ue_idx := 0); - vc_conn := f_start_handler_with_pars(refers(f_TC_sgsap_alert_rej), pars); + f_s1ap_setup(0); + + var ConnHdlrPars pars := f_init_pars(ue_idx := 0); + var ConnHdlr vc_conn := f_start_handler_with_pars(refers(f_TC_sgsap_alert_rej), pars); vc_conn.done; } -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41086?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I717c6f153ae77874170bf03e7a6c7bb628d12dba Gerrit-Change-Number: 41086 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
6 days, 9 hours
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: mme: Introduce test TC_s1ap_tau_periodic
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41085?usp=email
) Change subject: mme: Introduce test TC_s1ap_tau_periodic ...................................................................... mme: Introduce test TC_s1ap_tau_periodic Change-Id: I261c3421f6a082e0d610ece4cc96d3e031022891 --- M library/NAS_EPS_Templates.ttcn M mme/ConnHdlr.ttcn M mme/MME_Tests.ttcn M mme/expected-results.xml 4 files changed, 87 insertions(+), 9 deletions(-) Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve diff --git a/library/NAS_EPS_Templates.ttcn b/library/NAS_EPS_Templates.ttcn index 90c507a..d2502f0 100644 --- a/library/NAS_EPS_Templates.ttcn +++ b/library/NAS_EPS_Templates.ttcn @@ -585,6 +585,7 @@ /* 8.2.29 Tracking Area Update Request */ template (value) PDU_NAS_EPS ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(template (value) EPS_MobileIdentityLV old_guti, + template (value) EPS_UpdateTypeV eps_update_type := ts_EPS_UpdateTypeV(c_EPS_UPD_TYPE_TA_UPD), template (value) NAS_KeySetIdentifierV kset_id := ts_NAS_KeySetIdentifierV, template (omit) P_TMSISignatureTV old_ptmsi_sig := omit, template (omit) GUTI_TypeTV old_guti_type := omit, @@ -597,7 +598,7 @@ pDU_NAS_EPS_TrackingAreaUpdateRequest := { securityHeaderType := c_EPS_SEC_NONE, messageType := '01001000'B, - ePSupdateType := ts_EPS_UpdateTypeV, + ePSupdateType := eps_update_type, nasKeySetId := kset_id, oldGUTI := old_guti, nonCurrentNative_nasKeySetId := omit, diff --git a/mme/ConnHdlr.ttcn b/mme/ConnHdlr.ttcn index 4e94cbf..90e4366 100644 --- a/mme/ConnHdlr.ttcn +++ b/mme/ConnHdlr.ttcn @@ -850,6 +850,66 @@ } } +function f_tau(BIT3 typeOfUpdate := c_EPS_UPD_TYPE_TA_UPD, boolean exp_sgsap_lu := false) runs on ConnHdlr { + var template (value) EPS_MobileIdentityV mi := ts_NAS_MobileId_IMSI(g_pars.ue_pars.imsi); + var template (value) S1AP_PDU tx; + var template (value) PDU_NAS_EPS nas_tau; + timer T := 5.0; + + nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti := ts_EPS_MobileId_GUTI_(g_pars.ue_pars.guti), + eps_update_type := ts_EPS_UpdateTypeV(typeOfUpdate), + kset_id := g_pars.kset_id); + tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, + p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), + p_tAI := ts_enb_S1AP_TAI(g_pars.enb_pars[g_pars.mme_idx]), + p_eUTRAN_CGI := ts_enb_S1AP_CGI(g_pars.enb_pars[g_pars.mme_idx]), + p_rrcCause := mo_Signalling); + S1AP.send(tx); + + /* Expect updated KSI from network following 5G Core standards + *(open5gs.git 70310979c58fe186e9eaa06bec9d9a31f24ff7a1): */ + if (g_pars.kset_id.identifier != c_NAS_KEY_SET_ID_NO_KEY) { + if (g_pars.kset_id.identifier == '110'B) { + g_pars.kset_id.identifier := '000'B; + } else { + g_pars.kset_id.identifier := int2bit(bit2int(g_pars.kset_id.identifier) + 1, 3); + } + } + + as_DIA_AuthInfo(); + as_s1ap_handle_auth(); + alt { + [] as_DIA_UpdLoc() { + as_s1ap_handle_sec_mode(); + } + [] as_s1ap_handle_sec_mode() { + as_DIA_UpdLoc(); + } + } + + if (exp_sgsap_lu) { + T.start; + alt { + [] as_sgsap_handle_lu_req(IMSI_attach); + [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No SGsAP message from MME")); } + } + } + + T.start; + alt { + [] as_s1ap_handle_IntialCtxSetupReq_TAU_Accept(); + [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No message from MME")); } + } + + /* We now expect the MME to send a Modify Bearer Request to the SGW-C */ + f_gtp2_register_udmsg('22'O); + T.start; + alt { + [] as_GTP2C_ModifyBearer_success(); + [] T.timeout { Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, log2str("No message from MME")); } + } +} + /****************************** * RIM ******************************/ diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn index d4cecdc..18740bf 100644 --- a/mme/MME_Tests.ttcn +++ b/mme/MME_Tests.ttcn @@ -610,7 +610,8 @@ var hexstring mcc_mnc := f_convert_plmn(g_pars.enb_pars[g_pars.mme_idx].global_enb_id.pLMNidentity); var EPS_MobileIdentityLV old_guti := valueof(ts_EPS_MobileId_GUTI(mcc_mnc, '0001'O, '01'O, 'AABBCCDD'O)); - nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti, g_pars.kset_id); + nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti := old_guti, + kset_id := g_pars.kset_id); tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), @@ -645,6 +646,20 @@ vc_conn.done; } +private function f_TC_tau_periodic() runs on ConnHdlr { + f_attach(); + f_tau(c_EPS_UPD_TYPE_TA_UPD_PERIODIC); +} +testcase TC_s1ap_tau_periodic() runs on MTC_CT { + f_init(10, init_diameter := true, init_gtpv2c_s11:= true); + f_s1ap_setup(0); + + var ConnHdlrPars pars := f_init_pars(ue_idx := 0); + var ConnHdlr vc_conn; + vc_conn := f_start_handler_with_pars(refers(f_TC_tau_periodic), pars); + vc_conn.done; +} + private function f_TC_ue_cell_reselect_eutran_to_geran() runs on ConnHdlr { f_gtp_register_imsi(g_pars.ue_pars.imsi); f_attach(); @@ -714,12 +729,12 @@ rai_ptmsi2_guti(rai, ptmsi, guti_val); old_guti := ts_EPS_MobileId_GUTI_(guti_val); - nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti, - g_pars.kset_id, - ts_PTMSI_SignatureTV(ptmsi_sig), - ts_GUTI_TypeTV(GUTI_TYPE_MAPPED), - ts_NonceTV('12345678'O), - ts_CipheringKeySequenceNumberTV('000'B), + nas_tau := ts_PDU_NAS_EPS_TrackingAreaUpdateRequest(old_guti := old_guti, + kset_id := g_pars.kset_id, + old_ptmsi_sig := ts_PTMSI_SignatureTV(ptmsi_sig), + old_guti_type := ts_GUTI_TypeTV(GUTI_TYPE_MAPPED), + nonce_ue := ts_NonceTV('12345678'O), + gprs_cksn := ts_CipheringKeySequenceNumberTV('000'B), ue_net_cap := ue_net_cap); tx := ts_S1AP_InitialUE(p_eNB_value := g_pars.ue_pars.enb_ue_id, p_nasPdu := enc_PDU_NAS_EPS(valueof(nas_tau)), @@ -778,6 +793,7 @@ execute( TC_s1ap_setup() ); execute( TC_s1ap_attach() ); execute( TC_s1ap_tau_unknown_guti() ); + execute( TC_s1ap_tau_periodic() ); execute( TC_gn_echo_request() ); execute( TC_RIM_RAN_INF() ); execute( TC_s1ap_reset() ); diff --git a/mme/expected-results.xml b/mme/expected-results.xml index 2e733c4..694b119 100644 --- a/mme/expected-results.xml +++ b/mme/expected-results.xml @@ -1,10 +1,11 @@ <?xml version="1.0"?> -<testsuite name='Titan' tests='16' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> +<testsuite name='Titan' tests='17' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> <testcase classname='MME_Tests' name='TC_s1ap_setup_unknown_global_enb_id_plmn' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_setup_wrong_tac' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_setup' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_attach' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_tau_unknown_guti' time='MASKED'/> + <testcase classname='MME_Tests' name='TC_s1ap_tau_periodic' time='MASKED'/> <testcase classname='MME_Tests' name='TC_gn_echo_request' time='MASKED'/> <testcase classname='MME_Tests' name='TC_RIM_RAN_INF' time='MASKED'/> <testcase classname='MME_Tests' name='TC_s1ap_reset' time='MASKED'/> -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41085?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I261c3421f6a082e0d610ece4cc96d3e031022891 Gerrit-Change-Number: 41085 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
6 days, 9 hours
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: mme: Fix implementation of TC_sgsap_alert*
by pespin
pespin has posted comments on this change by pespin. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41086?usp=email
) Change subject: mme: Fix implementation of TC_sgsap_alert* ...................................................................... Patch Set 4: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41086?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: comment Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I717c6f153ae77874170bf03e7a6c7bb628d12dba Gerrit-Change-Number: 41086 Gerrit-PatchSet: 4 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Mon, 15 Sep 2025 13:49:25 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
6 days, 9 hours
1
0
0
0
← Newer
1
...
15
16
17
18
19
20
21
...
100
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
Results per page:
10
25
50
100
200