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
[M] Change in osmo-ttcn3-hacks[master]: asterisk: Test initial IMS REGISTER timeout
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37194?usp=email
) Change subject: asterisk: Test initial IMS REGISTER timeout ...................................................................... asterisk: Test initial IMS REGISTER timeout Add several tests emulating response timeouts at several point in time during IMS REGISTER procedure. Related: SYS#6971 Change-Id: If59d43b2779dfbd14890a88d664077c194f843a1 --- M asterisk/Asterisk_Tests.ttcn M asterisk/IMS_ConnectionHandler.ttcn M asterisk/expected-results.xml 3 files changed, 143 insertions(+), 9 deletions(-) Approvals: Jenkins Builder: Verified jolly: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn index 7126118..30f04fd 100644 --- a/asterisk/Asterisk_Tests.ttcn +++ b/asterisk/Asterisk_Tests.ttcn @@ -48,6 +48,8 @@ charstring mp_ami_user := "test_user"; charstring mp_ami_secret := "1234"; charstring mp_volte_ims_outbound_registration := "volte_ims"; + /* Current default by pjproject (timeout_timer_val) to 32s, and not changed by Asterisk */ + integer mp_volte_ims_outbound_register_timeout := 32; } type component test_CT { @@ -386,7 +388,9 @@ f_ami_action_PJSIPRegister(AMI_CLIENT, mp_volte_ims_outbound_registration); } -private altstep as_AMI_IMS_register_Auth(IMS_ConnHdlrPars pars, boolean resync := false) runs on test_CT +private altstep as_AMI_IMS_register_Auth(IMS_ConnHdlrPars pars, + boolean resync := false, + boolean exp_ami_ev_registered := true) runs on test_CT { var charstring rand_str := oct2str(pars.subscr.auth.rand); var charstring autn_str := oct2str(pars.subscr.auth.autn); @@ -399,9 +403,11 @@ f_str_tolower(oct2str(pars.subscr.auth.ck)), f_str_tolower(oct2str(pars.subscr.auth.ik))); - AMI_CLIENT.receive(tr_AMI_Event_Registry(f_sip_SipAddr_to_str(pars.subscr.local_sip_record), - "sip:" & mp_ims_domain, - "Registered")); + if (exp_ami_ev_registered) { + AMI_CLIENT.receive(tr_AMI_Event_Registry(f_sip_SipAddr_to_str(pars.subscr.local_sip_record), + "sip:" & mp_ims_domain, + "Registered")); + } } [resync] AMI_CLIENT.receive(tr_AMI_Event_AuthRequest(mp_volte_ims_outbound_registration, rand := pattern @nocase rand_str, @@ -480,6 +486,79 @@ f_shutdown(); } +private function f_TC_ims_registration_timeout_IMS_ConnHdlr(IMS_register_early_return early_ret, boolean exp_auth_resync := false) runs on IMS_ConnHdlr { + f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.registrar_sip_record.addr))); + + as_IMS_register(exp_auth_resync := exp_auth_resync, early_ret := early_ret); + + timer Tout; + /* 1.0: Give some margin. */ + Tout.start(int2float(mp_volte_ims_outbound_register_timeout) + 1.0); + /* Make sure no new REGISTER is attempted unless directed by AMI: */ + alt { + [] as_SIP_fail_req("nothing"); + [] as_SIP_fail_resp("nothing"); + [] Tout.timeout { /* Done */ } + } + setverdict(pass); +} +/* Test initial REGISTER against IMS core timing out. */ +private function f_TC_ims_registration_timeout_initial_100Trying(charstring id) runs on IMS_ConnHdlr { + f_TC_ims_registration_timeout_IMS_ConnHdlr(IMS_REG_EARLY_RET_BEFORE_Initial_100Trying); +} +private function f_TC_ims_registration_timeout_initial_401Unauthorized(charstring id) runs on IMS_ConnHdlr { + f_TC_ims_registration_timeout_IMS_ConnHdlr(IMS_REG_EARLY_RET_BEFORE_Initial_401Unauthorized); +} +private function f_TC_ims_registration_timeout_resync_401Unauthorized(charstring id) runs on IMS_ConnHdlr { + f_TC_ims_registration_timeout_IMS_ConnHdlr(IMS_REG_EARLY_RET_BEFORE_Resync_401Unauthorized, exp_auth_resync := true); +} +private function f_TC_ims_registration_timeout_protected_100Trying(charstring id) runs on IMS_ConnHdlr { + f_TC_ims_registration_timeout_IMS_ConnHdlr(IMS_REG_EARLY_RET_BEFORE_Protected_100Trying); +} +private function f_TC_ims_registration_timeout_protected_200OK(charstring id) runs on IMS_ConnHdlr { + f_TC_ims_registration_timeout_IMS_ConnHdlr(IMS_REG_EARLY_RET_BEFORE_Protected_200OK); +} +private function f_TC_ims_registration_timeout_initial(ims_void_fn fn, + boolean answer_register := false, + boolean resync := false) runs on test_CT { + var IMS_ConnHdlrPars pars; + var IMS_ConnHdlr vc_conn; + f_init(); + pars := f_init_IMS_ConnHdlrPars(); + vc_conn := f_start_handler_IMS(fn, pars); + + f_AMI_IMS_start_register(pars); + + if (answer_register) { + as_AMI_IMS_register_Auth(pars, resync := resync, exp_ami_ev_registered := false); + } + + AMI_CLIENT.receive(tr_AMI_Event_Registry(f_sip_SipAddr_to_str(pars.subscr.local_sip_record), + "sip:" & mp_ims_domain, + "Rejected")); + + vc_conn.done; + f_shutdown(); +} +testcase TC_ims_registration_timeout_initial_100Trying() runs on test_CT { + f_TC_ims_registration_timeout_initial(refers(f_TC_ims_registration_timeout_initial_100Trying)); +} +testcase TC_ims_registration_timeout_initial_401Unauthorized() runs on test_CT { + f_TC_ims_registration_timeout_initial(refers(f_TC_ims_registration_timeout_initial_401Unauthorized)); +} +testcase TC_ims_registration_timeout_resync_401Unauthorized() runs on test_CT { + f_TC_ims_registration_timeout_initial(refers(f_TC_ims_registration_timeout_resync_401Unauthorized), + true, true); +} +testcase TC_ims_registration_timeout_protected_100Trying() runs on test_CT { + f_TC_ims_registration_timeout_initial(refers(f_TC_ims_registration_timeout_protected_100Trying), + true, false); +} +testcase TC_ims_registration_timeout_protected_200OK() runs on test_CT { + f_TC_ims_registration_timeout_initial(refers(f_TC_ims_registration_timeout_protected_200OK), + true, false); +} + /* Test SIP registration of local clients */ private function f_TC_ims_call_mo(charstring id) runs on IMS_ConnHdlr { f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.registrar_sip_record.addr))); @@ -619,6 +698,11 @@ execute( TC_internal_call_all_4registered() ); execute( TC_ims_registration() ); execute( TC_ims_registration_resync() ); + execute( TC_ims_registration_timeout_initial_100Trying() ); + execute( TC_ims_registration_timeout_initial_401Unauthorized() ); + execute( TC_ims_registration_timeout_resync_401Unauthorized() ); + execute( TC_ims_registration_timeout_protected_100Trying() ); + execute( TC_ims_registration_timeout_protected_200OK() ); execute( TC_ims_call_mo() ); execute( TC_ims_call_mt() ); } diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn index 7b26980..d396268 100644 --- a/asterisk/IMS_ConnectionHandler.ttcn +++ b/asterisk/IMS_ConnectionHandler.ttcn @@ -208,7 +208,7 @@ charstring domain, charstring imsi, template (omit) IMS_CallPars cp := omit) := { - t_guard := 30.0, + t_guard := 60.0, realm := domain, local_sip_host := local_sip_host, local_sip_port := local_sip_port, @@ -237,7 +237,7 @@ fn.apply(id); } -private altstep as_SIP_fail_req(charstring exp_msg_str := "") runs on IMS_ConnHdlr +altstep as_SIP_fail_req(charstring exp_msg_str := "") runs on IMS_ConnHdlr { var PDU_SIP_Request sip_req; [] SIP.receive(PDU_SIP_Request:?) -> value sip_req { @@ -246,7 +246,7 @@ } } -private altstep as_SIP_fail_resp(charstring exp_msg_str := "") runs on IMS_ConnHdlr +altstep as_SIP_fail_resp(charstring exp_msg_str := "") runs on IMS_ConnHdlr { var PDU_SIP_Response sip_resp; [] SIP.receive(PDU_SIP_Response:?) -> value sip_resp { @@ -533,8 +533,18 @@ return valueof(wwwAuthenticate); } +type enumerated IMS_register_early_return { + IMS_REG_EARLY_RET_BEFORE_None, + IMS_REG_EARLY_RET_BEFORE_Initial_100Trying, + IMS_REG_EARLY_RET_BEFORE_Initial_401Unauthorized, + IMS_REG_EARLY_RET_BEFORE_Resync_401Unauthorized, + IMS_REG_EARLY_RET_BEFORE_Protected_100Trying, + IMS_REG_EARLY_RET_BEFORE_Protected_200OK +} + /* Peer is issuing 1st register, accept it: */ altstep as_IMS_register(boolean exp_auth_resync := false, + IMS_register_early_return early_ret := IMS_REG_EARLY_RET_BEFORE_None, boolean fail_others := true) runs on IMS_ConnHdlr { var template (present) PDU_SIP_Request exp_req := @@ -562,6 +572,10 @@ var template (value) Supported supported := ts_Supported({"sec-agree"}); var integer sip_seq_nr; + if (early_ret == IMS_REG_EARLY_RET_BEFORE_Initial_100Trying) { + return; /* Done */ + } + sip_call_id := g_rx_sip_req.msgHeader.callId.callid; via := g_rx_sip_req.msgHeader.via; via.viaBody[0].viaParams := f_sip_param_set(via.viaBody[0].viaParams, "rport", "1234"); /* TODO: set remote src port of the REGISTER */ @@ -595,6 +609,10 @@ f_ims_parse_register_contact(g_rx_sip_req.msgHeader.contact); f_ims_parse_security_client(g_rx_sip_req.msgHeader.security_client); + if (early_ret == IMS_REG_EARLY_RET_BEFORE_Initial_401Unauthorized) { + return; /* Done */ + } + if (not exp_auth_resync) { /* Delay ipsec setup in ip xfrm, since there will be another * 1st REGISTER with potentially new ports coming in later. */ @@ -636,6 +654,10 @@ authorization := authorization); SIP.receive(exp_req) -> value g_rx_sip_req; + if (early_ret == IMS_REG_EARLY_RET_BEFORE_Resync_401Unauthorized) { + return; /* Done */ + } + via := g_rx_sip_req.msgHeader.via; from_addr := g_rx_sip_req.msgHeader.fromField; to_addr := g_rx_sip_req.msgHeader.toField; @@ -680,7 +702,7 @@ } /* Now we should receive a new REGISTER over ipsec: */ - as_IMS_2nd_register(wwwAuthenticate); + as_IMS_2nd_register(wwwAuthenticate, early_ret := early_ret); } [fail_others] as_SIP_fail_resp(sip_expect_str); [fail_others] as_SIP_fail_req(sip_expect_str); @@ -688,7 +710,9 @@ } /* Peer is issuing 2nd register, accept it: */ -altstep as_IMS_2nd_register(WwwAuthenticate wwwAuthenticate, boolean fail_others := true) runs on IMS_ConnHdlr +altstep as_IMS_2nd_register(WwwAuthenticate wwwAuthenticate, + IMS_register_early_return early_ret := IMS_REG_EARLY_RET_BEFORE_None, + boolean fail_others := true) runs on IMS_ConnHdlr { var template (present) Authorization authorization := f_tr_Authorization_AKAv1MD5(wwwAuthenticate, @@ -713,6 +737,10 @@ var template (value) Supported supported := ts_Supported({"sec-agree"}); var integer sip_seq_nr; + if (early_ret == IMS_REG_EARLY_RET_BEFORE_Protected_100Trying) { + return; /* Done */ + } + sip_call_id := g_rx_sip_req.msgHeader.callId.callid; via := g_rx_sip_req.msgHeader.via; from_addr := g_rx_sip_req.msgHeader.fromField; @@ -737,6 +765,10 @@ /* Validate P-Access-Network-Info: */ f_ims_validate_register_P_Access_Network_info(g_rx_sip_req, exp_present := true); + if (early_ret == IMS_REG_EARLY_RET_BEFORE_Protected_200OK) { + return; /* Done */ + } + g_pars.subscr.p_associated_uri := valueof(ts_P_Associated_Uri({ ts_P_Assoc_uri_spec(ts_NameAddr(ts_SipUrl(ts_HostPort(g_pars.realm), ts_UserInfo(g_pars.subscr.msisdn), diff --git a/asterisk/expected-results.xml b/asterisk/expected-results.xml index 0c9cdd8..6b5def5 100644 --- a/asterisk/expected-results.xml +++ b/asterisk/expected-results.xml @@ -7,6 +7,11 @@ <testcase classname='Asterisk_Tests' name='TC_internal_call_all_4registered' time='MASKED'/> <testcase classname='Asterisk_Tests' name='TC_ims_registration' time='MASKED'/> <testcase classname='Asterisk_Tests' name='TC_ims_registration_resync' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_registration_timeout_initial_100Trying' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_registration_timeout_initial_401Unauthorized' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_registration_timeout_resync_401Unauthorized' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_registration_timeout_protected_100Trying' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_registration_timeout_protected_200OK' time='MASKED'/> <testcase classname='Asterisk_Tests' name='TC_ims_call_mo' time='MASKED'/> <testcase classname='Asterisk_Tests' name='TC_ims_call_mt' time='MASKED'/> </testsuite> -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37194?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: If59d43b2779dfbd14890a88d664077c194f843a1 Gerrit-Change-Number: 37194 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: neels <nhofmeyr(a)sysmocom.de> Gerrit-MessageType: merged
1 year
1
0
0
0
[L] Change in osmo-ttcn3-hacks[master]: asterisk: Test auth resync procedure
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37191?usp=email
) Change subject: asterisk: Test auth resync procedure ...................................................................... asterisk: Test auth resync procedure A new test is added to validate the procedure, plus all refactoring needed to accomodate for the new procedure. Related: SYS#6961 Change-Id: I2c654c270aa908859ec0bbb4d1da30d58de99be4 --- M asterisk/Asterisk_Tests.ttcn M asterisk/IMS_ConnectionHandler.ttcn M asterisk/expected-results.xml 3 files changed, 250 insertions(+), 90 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn index 75c51e1..bb1ed90 100644 --- a/asterisk/Asterisk_Tests.ttcn +++ b/asterisk/Asterisk_Tests.ttcn @@ -364,7 +364,7 @@ setverdict(pass); } -private function f_AMI_IMS_register(IMS_ConnHdlrPars pars) runs on test_CT +private function f_AMI_IMS_start_register(IMS_ConnHdlrPars pars) runs on test_CT { /* Give some time for IMS_ConnHdlr to register SIP expect. This could be done through IMS_COORD. */ f_sleep(1.0); @@ -378,22 +378,38 @@ /* Trigger registration: */ f_ami_action_PJSIPRegister(AMI_CLIENT, mp_volte_ims_outbound_registration); +} +private altstep as_AMI_IMS_register_Auth(IMS_ConnHdlrPars pars, boolean resync := false) runs on test_CT +{ var charstring rand_str := oct2str(pars.subscr.auth.rand); var charstring autn_str := oct2str(pars.subscr.auth.autn); - AMI_CLIENT.receive(tr_AMI_Event_AuthRequest(mp_volte_ims_outbound_registration, + [not resync] AMI_CLIENT.receive(tr_AMI_Event_AuthRequest(mp_volte_ims_outbound_registration, rand := pattern @nocase rand_str, - autn := pattern @nocase autn_str)); + autn := pattern @nocase autn_str)) { + f_ami_action_AuthResponse_RES(AMI_CLIENT, + mp_volte_ims_outbound_registration, + f_str_tolower(oct2str(pars.subscr.auth.res)), + f_str_tolower(oct2str(pars.subscr.auth.ck)), + f_str_tolower(oct2str(pars.subscr.auth.ik))); - f_ami_action_AuthResponse_RES(AMI_CLIENT, - mp_volte_ims_outbound_registration, - f_str_tolower(oct2str(pars.subscr.auth.res)), - f_str_tolower(oct2str(pars.subscr.auth.ck)), - f_str_tolower(oct2str(pars.subscr.auth.ik))); + AMI_CLIENT.receive(tr_AMI_Event_Registry(f_sip_SipAddr_to_str(pars.subscr.local_sip_record), + "sip:" & mp_ims_domain, + "Registered")); + } + [resync] AMI_CLIENT.receive(tr_AMI_Event_AuthRequest(mp_volte_ims_outbound_registration, + rand := pattern @nocase rand_str, + autn := pattern @nocase autn_str)) { + f_ami_action_AuthResponse_AUTS(AMI_CLIENT, + mp_volte_ims_outbound_registration, + f_str_tolower(oct2str(pars.subscr.auth.auts))); + } +} - AMI_CLIENT.receive(tr_AMI_Event_Registry(f_sip_SipAddr_to_str(pars.subscr.local_sip_record), - "sip:" & mp_ims_domain, - "Registered")); +private function f_AMI_IMS_register(IMS_ConnHdlrPars pars, boolean resync := false) runs on test_CT +{ + f_AMI_IMS_start_register(pars); + as_AMI_IMS_register_Auth(pars, resync := resync); } private function f_AMI_IMS_unregister(IMS_ConnHdlrPars pars) runs on test_CT @@ -404,7 +420,7 @@ "Unregistered")); } -/* Test SIP registration of local clients */ +/* Test IMS registration of VoLTE UE */ private function f_TC_ims_registration(charstring id) runs on IMS_ConnHdlr { f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.registrar_sip_record.addr))); as_IMS_register(); @@ -430,6 +446,34 @@ f_shutdown(); } +/* Test IMS registration of VoLTE UE. ISIM Resync case. */ +private function f_TC_ims_registration_resync(charstring id) runs on IMS_ConnHdlr { + f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.registrar_sip_record.addr))); + as_IMS_register(exp_auth_resync := true); + as_IMS_unregister(); + setverdict(pass); +} +testcase TC_ims_registration_resync() runs on test_CT { + var IMS_ConnHdlrPars pars; + var IMS_ConnHdlr vc_conn; + f_init(); + pars := f_init_IMS_ConnHdlrPars(); + vc_conn := f_start_handler_IMS(refers(f_TC_ims_registration_resync), pars); + + /* Emulate first Auth sync failure: */ + f_AMI_IMS_register(pars, resync := true); + /* Second auth goes well: */ + as_AMI_IMS_register_Auth(pars, resync := false); + /* Stay registered for one second */ + f_sleep(1.0); + + /* Trigger unregistration: */ + f_AMI_IMS_unregister(pars); + + vc_conn.done; + f_shutdown(); +} + /* Test SIP registration of local clients */ private function f_TC_ims_call_mo(charstring id) runs on IMS_ConnHdlr { f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.registrar_sip_record.addr))); @@ -568,6 +612,7 @@ execute( TC_internal_call_all_3registered() ); execute( TC_internal_call_all_4registered() ); execute( TC_ims_registration() ); + execute( TC_ims_registration_resync() ); execute( TC_ims_call_mo() ); execute( TC_ims_call_mt() ); } diff --git a/asterisk/IMS_ConnectionHandler.ttcn b/asterisk/IMS_ConnectionHandler.ttcn index 9f7d0f1..7b26980 100644 --- a/asterisk/IMS_ConnectionHandler.ttcn +++ b/asterisk/IMS_ConnectionHandler.ttcn @@ -65,7 +65,8 @@ OCT16 autn, OCT8 res, OCT16 ck, - OCT16 ik + OCT16 ik, + OCT14 auts } type record IMS_ConnHdlrSubscrPars { @@ -104,6 +105,7 @@ uint16_t local_sip_port, SipUrl registrar_sip_req_uri, Via local_via, + Server server_name, IMS_ConnHdlrSubscrPars subscr optional } type record of IMS_ConnHdlrPars IMS_ConnHdlrParsList; @@ -175,7 +177,10 @@ autn := 'd42e61db5f15800067393a5b7691a227'O, res := '6f2556bbe4366ab1'O, ck := '0b389d08c833991734936bec55cac800'O, - ik := '17141862125bd30c81c4224391a0909a'O + ik := '17141862125bd30c81c4224391a0909a'O, + /* NOTE: AUTS value randomly crafted. It's fine since it's just forwarded + * AMI -> asterisk -> IMS and we blindly match and accept it. */ + auts := 'd42e61db5f15800067393a5b7691'O }, ipsec_auth_key := "0x17141862125bd30c81c4224391a0909a00000000", ipsec_local_spi_c := 4142, @@ -209,6 +214,7 @@ local_sip_port := local_sip_port, registrar_sip_req_uri := valueof(ts_SipUrlHost(domain)), local_via := ts_Via_from(ts_HostPort(local_sip_host, local_sip_port)), + server_name := valueof(ts_Server({c_sip_server_name})), subscr := t_IMS_SubscrPars(local_sip_host, local_sip_port, domain := domain, imsi := imsi, cp := cp) } @@ -393,6 +399,18 @@ "local_spi_c=", g_pars.subscr.ipsec_local_spi_c, " local_spi_s=", g_pars.subscr.ipsec_local_spi_s); } +private function f_ims_parse_register_contact(Contact contact) runs on IMS_ConnHdlr +{ + var HostPort hp := valueof(contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec.hostPort); + + g_pars.subscr.remote_sip_host := hp.host; + if (ispresent(hp.portField)) { + g_pars.subscr.remote_sip_port := hp.portField; + } else { + g_pars.subscr.remote_sip_port := 5060; + } +} + private function f_IMS_exec_sync(charstring cmdline, template (present) integer rc := 0) runs on IMS_ConnHdlr return ASP_PResult { var ASP_PResult res; @@ -480,8 +498,44 @@ return sdp; } +private function f_gen_Security_server() runs on IMS_ConnHdlr return Security_server { + var template (value) Security_server security_server; + /* Security-Server: ipsec-3gpp;q=0.1;prot=esp;mod=trans;spi-c=4096;spi-s=4097;port-c=5104;port-s=6104;alg=hmac-sha-1-96;ealg=null */ + var template (value) SemicolonParam_List sec_params := { + ts_Param("q", "0.1"), + ts_Param("prot", "esp"), + ts_Param("mod", "trans"), + ts_Param("spi-c", int2str(g_pars.subscr.ipsec_local_spi_c)), + ts_Param("spi-s", int2str(g_pars.subscr.ipsec_local_spi_s)), + ts_Param("port-c", int2str(g_pars.local_sip_port)), + ts_Param("port-s", int2str(g_pars.local_sip_port)), + ts_Param("alg", "hmac-sha-1-96"), + ts_Param("ealg", "null") + }; + security_server := ts_Security_server({ + ts_Security_mechanism("ipsec-3gpp", sec_params) + }); + return valueof(security_server); +} + +private function f_gen_WwwAuthenticate() runs on IMS_ConnHdlr return WwwAuthenticate { + var template (value) WwwAuthenticate wwwAuthenticate; + var template (value) CommaParam_List digestCln; + digestCln := { + ts_Param("realm", f_sip_str_quote(g_pars.realm)), + ts_Param("qop", f_sip_str_quote("auth")), + ts_Param("algorithm", "AKAv1-MD5"), + ts_Param("nonce", f_sip_str_quote(f_nonce_from_rand_autn(g_pars.subscr.auth.rand, + g_pars.subscr.auth.autn))) + /* "opaque not needed in IMS "*/ + }; + wwwAuthenticate := ts_WwwAuthenticate( { ts_Challenge_digestCln(digestCln) } ); + return valueof(wwwAuthenticate); +} + /* Peer is issuing 1st register, accept it: */ -altstep as_IMS_register(boolean fail_others := true) runs on IMS_ConnHdlr +altstep as_IMS_register(boolean exp_auth_resync := false, + boolean fail_others := true) runs on IMS_ConnHdlr { var template (present) PDU_SIP_Request exp_req := tr_SIP_REGISTER(g_pars.registrar_sip_req_uri, @@ -500,18 +554,13 @@ var template (value) PDU_SIP_Response tx_resp; var Via via; var CallidString sip_call_id; - var Contact contact; var template (value) From from_addr; var template (value) To to_addr; - var template (value) CommaParam_List digestCln ; - var template (value) WwwAuthenticate wwwAuthenticate; - var template (value) Security_server security_server; - var template (value) Server server_name := ts_Server({c_sip_server_name}); + var WwwAuthenticate wwwAuthenticate; + var Security_server security_server; var template (value) Require require := ts_Require({"sec-agree"}); var template (value) Supported supported := ts_Supported({"sec-agree"}); - var template (present) Authorization authorization; var integer sip_seq_nr; - var charstring tx_sdp; sip_call_id := g_rx_sip_req.msgHeader.callId.callid; via := g_rx_sip_req.msgHeader.via; @@ -520,9 +569,17 @@ to_addr := g_rx_sip_req.msgHeader.toField; sip_seq_nr := g_rx_sip_req.msgHeader.cSeq.seqNumber; - contact := g_rx_sip_req.msgHeader.contact; - f_ims_validate_register_contact(contact); - g_pars.subscr.registered_contact := contact; + /* Tx 100 Tyring */ + tx_resp := ts_SIP_Response_Trying(sip_call_id, + from_addr, + to_addr, + via, + sip_seq_nr, + "REGISTER", + allow := omit, + server := g_pars.server_name, + userAgent := omit); + SIP.send(tx_resp); /* Validate P-Access-Network-Info: rfc7315 6.4: * "3GPP will use the P-Access-Network-Info header field to @@ -534,55 +591,19 @@ */ f_ims_validate_register_P_Access_Network_info(g_rx_sip_req, exp_present := false); - /* Tx 100 Tyring */ - tx_resp := ts_SIP_Response_Trying(sip_call_id, - from_addr, - to_addr, - via, - sip_seq_nr, - "REGISTER", - allow := omit, - server := server_name, - userAgent := omit); - SIP.send(tx_resp); - - var HostPort hp := valueof(contact.contactBody.contactAddresses[0].addressField.nameAddr.addrSpec.hostPort); - g_pars.subscr.remote_sip_host := hp.host; - if (ispresent(hp.portField)) { - g_pars.subscr.remote_sip_port := hp.portField; - } else { - g_pars.subscr.remote_sip_port := 5060; - } + f_ims_validate_register_contact(g_rx_sip_req.msgHeader.contact); + f_ims_parse_register_contact(g_rx_sip_req.msgHeader.contact); f_ims_parse_security_client(g_rx_sip_req.msgHeader.security_client); - f_ims_setup_ipsec(); + + if (not exp_auth_resync) { + /* Delay ipsec setup in ip xfrm, since there will be another + * 1st REGISTER with potentially new ports coming in later. */ + f_ims_setup_ipsec(); + } to_addr.toParams := f_sip_param_set(to_addr.toParams, "tag", f_sip_rand_tag()); - - digestCln := { - ts_Param("realm", f_sip_str_quote(g_pars.realm)), - ts_Param("qop", f_sip_str_quote("auth")), - ts_Param("algorithm", "AKAv1-MD5"), - ts_Param("nonce", f_sip_str_quote(f_nonce_from_rand_autn(g_pars.subscr.auth.rand, - g_pars.subscr.auth.autn))) - /* "opaque not needed in IMS "*/ - }; - wwwAuthenticate := ts_WwwAuthenticate( { ts_Challenge_digestCln(digestCln) } ) - - /* Security-Server: ipsec-3gpp;q=0.1;prot=esp;mod=trans;spi-c=4096;spi-s=4097;port-c=5104;port-s=6104;alg=hmac-sha-1-96;ealg=null */ - var template (value) SemicolonParam_List sec_params := { - ts_Param("q", "0.1"), - ts_Param("prot", "esp"), - ts_Param("mod", "trans"), - ts_Param("spi-c", int2str(g_pars.subscr.ipsec_local_spi_c)), - ts_Param("spi-s", int2str(g_pars.subscr.ipsec_local_spi_s)), - ts_Param("port-c", int2str(g_pars.local_sip_port)), - ts_Param("port-s", int2str(g_pars.local_sip_port)), - ts_Param("alg", "hmac-sha-1-96"), - ts_Param("ealg", "null") - }; - security_server := ts_Security_server({ - ts_Security_mechanism("ipsec-3gpp", sec_params) - }); + wwwAuthenticate := f_gen_WwwAuthenticate(); + security_server := f_gen_Security_server(); /* Tx 401 Unauthorized */ tx_resp := ts_SIP_Response_Unauthorized(sip_call_id, @@ -594,23 +615,103 @@ "REGISTER", p_associated_uri := g_pars.subscr.p_associated_uri, security_server := security_server, - server := server_name, + server := g_pars.server_name, supported := supported, userAgent := omit); SIP.send(tx_resp); + if (exp_auth_resync) { + /* Now we should receive a new non-protected REGISTER + * with Authoritzation containing auts in base64: */ + var template (present) Authorization authorization := + f_tr_Authorization_AKAv1MD5(wwwAuthenticate, + g_pars.subscr.imsi & "@" & g_pars.realm, + f_sip_SipUrl_to_str(g_pars.registrar_sip_req_uri)); + exp_req := + tr_SIP_REGISTER(g_pars.registrar_sip_req_uri, + ?, + tr_From(), + tr_To(), + tr_Via_from(f_tr_HostPort(via.viaBody[0].sentBy.host, via.viaBody[0].sentBy.portField)), + authorization := authorization); + SIP.receive(exp_req) -> value g_rx_sip_req; + + via := g_rx_sip_req.msgHeader.via; + from_addr := g_rx_sip_req.msgHeader.fromField; + to_addr := g_rx_sip_req.msgHeader.toField; + sip_seq_nr := g_rx_sip_req.msgHeader.cSeq.seqNumber; + + /* Tx 100 Tyring */ + tx_resp := ts_SIP_Response_Trying(sip_call_id, + from_addr, + to_addr, + via, + sip_seq_nr, + "REGISTER", + allow := omit, + server := g_pars.server_name, + userAgent := omit); + SIP.send(tx_resp); + + f_sip_param_match_value_or_fail(g_rx_sip_req.msgHeader.authorization.body.digestResponse, + "auts", f_sip_str_quote(enc_MIME_Base64(g_pars.subscr.auth.auts))); + f_ims_validate_register_P_Access_Network_info(g_rx_sip_req, exp_present := false); + f_ims_validate_register_contact(g_rx_sip_req.msgHeader.contact); + f_ims_parse_register_contact(g_rx_sip_req.msgHeader.contact); + f_ims_parse_security_client(g_rx_sip_req.msgHeader.security_client); + f_ims_setup_ipsec(); + + security_server := f_gen_Security_server(); + + /* Tx again 401 Unauthorized, this time our AMI interface will accept it: */ + tx_resp := ts_SIP_Response_Unauthorized(sip_call_id, + from_addr, + to_addr, + via, + wwwAuthenticate, + sip_seq_nr, + "REGISTER", + p_associated_uri := g_pars.subscr.p_associated_uri, + security_server := security_server, + server := g_pars.server_name, + supported := supported, + userAgent := omit); + SIP.send(tx_resp); + } + /* Now we should receive a new REGISTER over ipsec: */ - authorization := f_tr_Authorization_AKAv1MD5(valueof(wwwAuthenticate), - g_pars.subscr.imsi & "@" & g_pars.realm, - f_sip_SipUrl_to_str(g_pars.registrar_sip_req_uri)); - exp_req := + as_IMS_2nd_register(wwwAuthenticate); + } + [fail_others] as_SIP_fail_resp(sip_expect_str); + [fail_others] as_SIP_fail_req(sip_expect_str); + +} + +/* Peer is issuing 2nd register, accept it: */ +altstep as_IMS_2nd_register(WwwAuthenticate wwwAuthenticate, boolean fail_others := true) runs on IMS_ConnHdlr +{ + var template (present) Authorization authorization := + f_tr_Authorization_AKAv1MD5(wwwAuthenticate, + g_pars.subscr.imsi & "@" & g_pars.realm, + f_sip_SipUrl_to_str(g_pars.registrar_sip_req_uri)); + var template (present) PDU_SIP_Request exp_req := tr_SIP_REGISTER(g_pars.registrar_sip_req_uri, ?, tr_From(), tr_To(), tr_Via_from(f_tr_HostPort(g_pars.subscr.remote_sip_host, g_pars.subscr.ipsec_remote_port_s)), authorization := authorization); - SIP.receive(exp_req) -> value g_rx_sip_req; + var charstring sip_expect_str := log2str(exp_req); + + [] SIP.receive(exp_req) -> value g_rx_sip_req { + var template (value) PDU_SIP_Response tx_resp; + var Via via; + var CallidString sip_call_id; + var template (value) From from_addr; + var template (value) To to_addr; + var template (value) Require require := ts_Require({"sec-agree"}); + var template (value) Supported supported := ts_Supported({"sec-agree"}); + var integer sip_seq_nr; sip_call_id := g_rx_sip_req.msgHeader.callId.callid; via := g_rx_sip_req.msgHeader.via; @@ -626,7 +727,7 @@ sip_seq_nr, "REGISTER", allow := omit, - server := server_name, + server := g_pars.server_name, userAgent := omit); SIP.send(tx_resp); @@ -645,6 +746,9 @@ scheme := "tel"))), ts_P_Assoc_uri_spec(g_rx_sip_req.msgHeader.toField.addressField.nameAddr) })); + f_ims_validate_register_contact(g_rx_sip_req.msgHeader.contact); + f_ims_parse_register_contact(g_rx_sip_req.msgHeader.contact); + g_pars.subscr.registered_contact := g_rx_sip_req.msgHeader.contact; /* Tx 200 OK */ to_addr.toParams := f_sip_param_set(to_addr.toParams, "tag", f_sip_rand_tag()); @@ -657,14 +761,13 @@ via, p_associated_uri := g_pars.subscr.p_associated_uri, require := require, - server := server_name, + server := g_pars.server_name, supported := supported, userAgent := omit); SIP.send(tx_resp); } [fail_others] as_SIP_fail_resp(sip_expect_str); [fail_others] as_SIP_fail_req(sip_expect_str); - } /* Peer wants to unregister, accept it: */ @@ -693,12 +796,10 @@ var template (value) CommaParam_List digestCln ; var template (value) WwwAuthenticate wwwAuthenticate; var template (value) Security_server security_server; - var template (value) Server server_name := ts_Server({c_sip_server_name}); var template (value) Require require := ts_Require({"sec-agree"}); var template (value) Supported supported := ts_Supported({"sec-agree"}); var template (present) Authorization authorization; var integer sip_seq_nr; - var charstring tx_sdp; sip_call_id := g_rx_sip_req.msgHeader.callId.callid; via := g_rx_sip_req.msgHeader.via; @@ -727,7 +828,7 @@ sip_seq_nr, "REGISTER", allow := omit, - server := server_name, + server := g_pars.server_name, userAgent := omit); SIP.send(tx_resp); @@ -748,7 +849,7 @@ contact := contact, p_associated_uri := g_pars.subscr.p_associated_uri, require := require, - server := server_name, + server := g_pars.server_name, supported := supported, userAgent := omit); SIP.send(tx_resp); diff --git a/asterisk/expected-results.xml b/asterisk/expected-results.xml index 44d6c01..0c9cdd8 100644 --- a/asterisk/expected-results.xml +++ b/asterisk/expected-results.xml @@ -2,10 +2,11 @@ <testsuite name='Titan' tests='9' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> <testcase classname='Asterisk_Tests' name='TC_internal_registration' time='MASKED'/> <testcase classname='Asterisk_Tests' name='TC_internal_call_momt' time='MASKED'/> - <testcase classname='Asterisk_Tests' name='TC_internal_call_all_2registered' time='MASKED'/> - <testcase classname='Asterisk_Tests' name='TC_internal_call_all_3registered' time='MASKED'/> - <testcase classname='Asterisk_Tests' name='TC_internal_call_all_4registered' time='MASKED'/> - <testcase classname='Asterisk_Tests' name='TC_ims_registration' time='MASKED'/> - <testcase classname='Asterisk_Tests' name='TC_ims_call_mo' time='MASKED'/> - <testcase classname='Asterisk_Tests' name='TC_ims_call_mt' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_internal_call_all_2registered' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_internal_call_all_3registered' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_internal_call_all_4registered' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_registration' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_registration_resync' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_call_mo' time='MASKED'/> + <testcase classname='Asterisk_Tests' name='TC_ims_call_mt' time='MASKED'/> </testsuite> -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37191?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I2c654c270aa908859ec0bbb4d1da30d58de99be4 Gerrit-Change-Number: 37191 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: asterisk: Implement SIP UA unregister
by pespin
pespin has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37193?usp=email
) Change subject: asterisk: Implement SIP UA unregister ...................................................................... asterisk: Implement SIP UA unregister Change-Id: I1ea6be662db00e52dbd39c4f54bb656dc4587ec7 --- M asterisk/Asterisk_Tests.ttcn M asterisk/SIP_ConnectionHandler.ttcn 2 files changed, 66 insertions(+), 6 deletions(-) Approvals: pespin: Looks good to me, approved neels: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn index bb1ed90..7126118 100644 --- a/asterisk/Asterisk_Tests.ttcn +++ b/asterisk/Asterisk_Tests.ttcn @@ -183,7 +183,9 @@ private function f_TC_internal_registration(charstring id) runs on SIPConnHdlr { f_SIP_register(); - // f_SIP_deregister(); + /* Trigger unregistration: */ + f_sleep(1.0); + f_SIP_unregister(); setverdict(pass); } testcase TC_internal_registration() runs on test_CT { @@ -209,6 +211,8 @@ COORD.receive(COORD_CMD_HANGUP); f_SIP_do_call_hangup(); + f_SIP_unregister(); + setverdict(pass); } private function f_TC_internal_call_mt(charstring id) runs on SIPConnHdlr { @@ -234,6 +238,8 @@ } as_SIP_exp_call_hangup(g_pars.cp.sip_seq_nr + 1); + f_SIP_unregister(); + setverdict(pass); } testcase TC_internal_call_momt() runs on test_CT { diff --git a/asterisk/SIP_ConnectionHandler.ttcn b/asterisk/SIP_ConnectionHandler.ttcn index 05f872f..892f5a3 100644 --- a/asterisk/SIP_ConnectionHandler.ttcn +++ b/asterisk/SIP_ConnectionHandler.ttcn @@ -61,6 +61,7 @@ SipUrl local_sip_url_ext, SipAddr local_sip_record, Contact local_contact, + Authorization authorization optional, CallPars cp optional } type record of SIPConnHdlrPars SIPConnHdlrParsList; @@ -147,6 +148,7 @@ ts_UserInfo(user))), omit) })), + authorization := omit, cp := cp } @@ -299,10 +301,11 @@ as_SIP_expect_resp(exp); /* Digest Auth: RFC 2617 */ - authorization := f_sip_digest_gen_Authorization_MD5(g_rx_sip_resp.msgHeader.wwwAuthenticate, - g_pars.user, g_pars.password, - "REGISTER", - f_sip_SipUrl_to_str(g_pars.registrar_sip_req_uri)) + g_pars.authorization := + f_sip_digest_gen_Authorization_MD5(g_rx_sip_resp.msgHeader.wwwAuthenticate, + g_pars.user, g_pars.password, + "REGISTER", + f_sip_SipUrl_to_str(g_pars.registrar_sip_req_uri)) /* New transaction: */ g_pars.registrar_sip_seq_nr := g_pars.registrar_sip_seq_nr + 1; @@ -320,7 +323,49 @@ g_pars.registrar_sip_seq_nr, g_pars.local_contact, ts_Expires("7200"), - authorization := authorization)); + authorization := g_pars.authorization)); + + /* Wait for OK answer */ + exp := tr_SIP_Response( + g_pars.registrar_sip_call_id, + from_addr, + to_addr_exp, + f_tr_Via_response(via), + *, + "REGISTER", 200, + g_pars.registrar_sip_seq_nr, "OK"); + as_SIP_expect_resp(exp); + + /* Prepare for next use: */ + g_pars.registrar_sip_seq_nr := g_pars.registrar_sip_seq_nr + 1; + return g_rx_sip_resp; +} + +function f_SIP_unregister() runs on SIPConnHdlr return PDU_SIP_Response +{ + var template (present) PDU_SIP_Response exp; + var Via via := g_pars.local_via; + var From from_addr := valueof(ts_From(g_pars.registrar_sip_record.addr, g_pars.registrar_sip_record.params)); + var To to_addr := valueof(ts_To(g_pars.registrar_sip_record.addr, g_pars.registrar_sip_record.params)); + var template (present) To to_addr_exp := tr_To(tr_Addr_Union_from_val(to_addr.addressField), *); + var charstring branch_value; + + branch_value := f_sip_gen_branch(f_sip_SipAddr_to_str(g_pars.registrar_sip_record), + f_sip_SipAddr_to_str(g_pars.registrar_sip_record), + g_pars.registrar_sip_call_id, + g_pars.registrar_sip_seq_nr); + + via.viaBody[0].viaParams := f_sip_param_set(via.viaBody[0].viaParams, "branch", branch_value); + from_addr.fromParams := f_sip_param_set(from_addr.fromParams, "tag", f_sip_rand_tag()); + SIP.send(ts_SIP_REGISTER(g_pars.registrar_sip_req_uri, + g_pars.registrar_sip_call_id, + from_addr, + to_addr, + via, + g_pars.registrar_sip_seq_nr, + g_pars.local_contact, + ts_Expires("0"), + authorization := g_pars.authorization)); /* Wait for OK answer */ exp := tr_SIP_Response( -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37193?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I1ea6be662db00e52dbd39c4f54bb656dc4587ec7 Gerrit-Change-Number: 37193 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 year
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: asterisk: Test initial IMS REGISTER timeout
by pespin
Attention is currently required from: neels. pespin has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37194?usp=email
) Change subject: asterisk: Test initial IMS REGISTER timeout ...................................................................... Patch Set 3: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37194?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: If59d43b2779dfbd14890a88d664077c194f843a1 Gerrit-Change-Number: 37194 Gerrit-PatchSet: 3 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: jolly <andreas(a)eversberg.eu> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Comment-Date: Tue, 18 Jun 2024 11:14:53 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: asterisk: Implement SIP UA unregister
by pespin
pespin has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37193?usp=email
) Change subject: asterisk: Implement SIP UA unregister ...................................................................... Patch Set 2: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37193?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I1ea6be662db00e52dbd39c4f54bb656dc4587ec7 Gerrit-Change-Number: 37193 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Tue, 18 Jun 2024 11:14:51 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[L] Change in osmo-ttcn3-hacks[master]: asterisk: Test auth resync procedure
by pespin
Attention is currently required from: laforge, neels. pespin has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37191?usp=email
) Change subject: asterisk: Test auth resync procedure ...................................................................... Patch Set 2: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37191?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I2c654c270aa908859ec0bbb4d1da30d58de99be4 Gerrit-Change-Number: 37191 Gerrit-PatchSet: 2 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Comment-Date: Tue, 18 Jun 2024 11:14:49 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[S] Change in osmo-ttcn3-hacks[master]: s1gw: pass Global_ENB_ID to ConnHdlr
by fixeria
fixeria has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37243?usp=email
) Change subject: s1gw: pass Global_ENB_ID to ConnHdlr ...................................................................... Patch Set 3: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37243?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I9660ca96f13c4e4c890f3957a25d01a27e2e0cac Gerrit-Change-Number: 37243 Gerrit-PatchSet: 3 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Tue, 18 Jun 2024 11:14:41 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: s1gw: add TC_e_rab_setup
by pespin
Attention is currently required from: fixeria, osmith. pespin has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37245?usp=email
) Change subject: s1gw: add TC_e_rab_setup ...................................................................... Patch Set 4: Code-Review+1 -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37245?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I94eb8cac4b5659c0f6f1bb248a80692b8cf84b6f Gerrit-Change-Number: 37245 Gerrit-PatchSet: 4 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: osmith <osmith(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Tue, 18 Jun 2024 11:13:46 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: s1ap: add templates for E-RAB SETUP REQUEST/RESPONSE
by pespin
Attention is currently required from: fixeria. pespin has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37244?usp=email
) Change subject: s1ap: add templates for E-RAB SETUP REQUEST/RESPONSE ...................................................................... Patch Set 4: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37244?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I145e2068ba62cdff8f3075f97c274e248864a9f7 Gerrit-Change-Number: 37244 Gerrit-PatchSet: 4 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Tue, 18 Jun 2024 11:12:16 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
[S] Change in osmo-ttcn3-hacks[master]: s1gw: rework module parameter naming, add mp_s1gw_mme_ip
by pespin
Attention is currently required from: fixeria. pespin has posted comments on this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37246?usp=email
) Change subject: s1gw: rework module parameter naming, add mp_s1gw_mme_ip ...................................................................... Patch Set 2: Code-Review+2 -- To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37246?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ice665662c8448c8314d5e6cc1e401e62b635872c Gerrit-Change-Number: 37246 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Tue, 18 Jun 2024 11:11:04 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 year
1
0
0
0
← Newer
1
...
28
29
30
31
32
33
34
...
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