This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has uploaded this change for review. ( https://gerrit.osmocom.org/13866 Change subject: sgsn: Actual first Iu test case ...................................................................... sgsn: Actual first Iu test case Change-Id: I66069e31c30d33934ad57cc2b8794f56ffd5c7d6 --- M sgsn/SGSN_Tests.ttcn A sgsn/SGSN_Tests_Iu.ttcn 2 files changed, 120 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/66/13866/1 diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn index 5dae397..8bd32b1 100644 --- a/sgsn/SGSN_Tests.ttcn +++ b/sgsn/SGSN_Tests.ttcn @@ -1,5 +1,7 @@ module SGSN_Tests { +friend module SGSN_Tests_Iu; + import from General_Types all; import from Osmocom_Types all; import from Native_Functions all; @@ -455,16 +457,72 @@ f_send_llc(ts_LLC_UI(l3_enc, sapi, '0'B, n_u)); } +/* trigger sending of a RANAP InitialUE and wait for SCCP connection confirmation */ +function f_send_l3_initial_ue(template PDU_L3_MS_SGSN l3_mo) runs on BSSGP_ConnHdlr { + log("Sending InitialUE: ", l3_mo); + var octetstring l3_enc := enc_PDU_L3_MS_SGSN(valueof(l3_mo)); + var RANAP_PDU ranap; + var LAI lai := { + pLMNidentity := '62F224'O, + lAC := '1234'O, + iE_Extensions := omit + }; + var SAI sai := { + pLMNidentity := lai.pLMNidentity, + lAC := lai.lAC, + sAC := '0000'O, /* FIXME */ + iE_Extensions := omit + }; + var IuSignallingConnectionIdentifier sigc_id := int2bit(23, 24); /* FIXME */ + var GlobalRNC_ID grnc_id := { + pLMNidentity := lai.pLMNidentity, + rNC_ID := 2342 /* FIXME */ + }; + + ranap := valueof(ts_RANAP_initialUE_CS(lai, sai, l3_enc, sigc_id, grnc_id)); + BSSAP.send(ts_RANAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_local, ranap)); + alt { + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND) {} + [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) { + setverdict(fail, "DISC.ind from SCCP"); + mtc.stop; + } + } +} + +/* send a L3 (GMM/SM) message over whatever is the appropriate lower-layer bearer */ +function f_send_l3(template PDU_L3_MS_SGSN l3_mo, integer gb_index := 0, boolean initial := false) runs on BSSGP_ConnHdlr { + if (gb_index >= NUM_GB) { + if (initial) { + f_send_l3_initial_ue(l3_mo); + } else { + BSSAP.send(ts_PDU_DTAP_PS_MO(l3_mo)); + } + } else { + f_send_l3_gmm_llc(l3_mo, gb_index); + } +} + altstep as_mm_identity(integer gb_idx := 0) runs on BSSGP_ConnHdlr { var MobileL3_CommonIE_Types.MobileIdentityLV mi; - [] BSSGP[gb_idx].receive(tr_GMM_ID_REQ('001'B)) { + [gb_idx < NUM_GB] BSSGP[gb_idx].receive(tr_GMM_ID_REQ('001'B)) { mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); - f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi), gb_idx); + f_send_l3(ts_GMM_ID_RESP(mi), gb_idx); repeat; } - [] BSSGP[gb_idx].receive(tr_GMM_ID_REQ('010'B)) { + [gb_idx >= NUM_GB] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_ID_REQ('001'B))) { + mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); + f_send_l3(ts_GMM_ID_RESP(mi), gb_idx); + repeat; + } + [gb_idx < NUM_GB] BSSGP[gb_idx].receive(tr_GMM_ID_REQ('010'B)) { mi := valueof(ts_MI_IMEI_LV(g_pars.imei)); - f_send_l3_gmm_llc(ts_GMM_ID_RESP(mi), gb_idx); + f_send_l3(ts_GMM_ID_RESP(mi), gb_idx); + repeat; + } + [gb_idx >= NUM_GB] BSSAP.receive(tr_PDU_DTAP_PS_MT(tr_GMM_ID_REQ('010'B))) { + mi := valueof(ts_MI_IMEI_LV(g_pars.imei)); + f_send_l3(ts_GMM_ID_RESP(mi), gb_idx); repeat; } } @@ -475,7 +533,10 @@ var PDU_DTAP_PS_MT mt; var PDU_L3_SGSN_MS l3_mt; alt { - [] BSSGP[gb_idx].receive(rx_tpl) -> value l3_mt { } + [gb_idx < NUM_GB] BSSGP[gb_idx].receive(rx_tpl) -> value l3_mt { } + [gb_idx >= NUM_GB] BSSAP.receive(tr_PDU_DTAP_PS_MT(rx_tpl)) -> value mt { + l3_mt := mt.dtap; + } } return l3_mt; } @@ -543,7 +604,17 @@ l3_mo.msgs.gprs_mm.authenticationAndCipheringResponse.imeisv := valueof(ts_MI_IMEISV_TLV(g_pars.imei & '0'H)); } - f_send_l3_gmm_llc(l3_mo, gb_idx); + f_send_l3(l3_mo, gb_idx); + + /* Security Mode Command + Complete on Iu case */ + if (gb_idx >= NUM_GB) { + BSSAP.receive(tr_RANAP_SecurityModeCmd(uia_algs := ?, uia_key := oct2bit(g_pars.vec.ik), + key_sts := ?)) { + var IntegrityProtectionAlgorithm uia_chosen := 0; /*standard_UMTS_integrity_algorithm_UIA1;*/ + BSSAP.send(ts_RANAP_SecurityModeComplete(uia_chosen)); + //BSSAP.receive(tr_RANAP_CommonId(imsi_hex2oct(g_pars.imsi))); + } + } } else { /* wait for identity procedure */ f_sleep(1.0); @@ -649,7 +720,7 @@ * revisionLevelIndicatior is at the wrong place! */ attach_req.msgs.gprs_mm.attachRequest.msNetworkCapability.msNetworkCapabilityV.solSACapability := '0'B; - f_send_l3_gmm_llc(attach_req, gb_idx); + f_send_l3(attach_req, gb_idx, initial := true); f_gmm_auth(umts_aka_challenge, force_gsm_sres, gb_idx); /* Expect SGSN to perform LU with HLR */ f_gmm_gsup_lu_isd(); @@ -658,7 +729,12 @@ f_process_attach_accept(l3_mt.msgs.gprs_mm.attachAccept); /* FIXME: Extract P-TMSI, if any. Only send Complete if necessary */ - f_send_l3_gmm_llc(ts_GMM_ATTACH_COMPL, gb_idx); + f_send_l3(ts_GMM_ATTACH_COMPL, gb_idx); + + /* IuPS case: Expect Iu Release */ + if (gb_idx >= NUM_GB) { + as_iu_release_compl_disc(); + } } private function f_TC_attach(charstring id) runs on BSSGP_ConnHdlr { diff --git a/sgsn/SGSN_Tests_Iu.ttcn b/sgsn/SGSN_Tests_Iu.ttcn new file mode 100644 index 0000000..2c2a8af --- /dev/null +++ b/sgsn/SGSN_Tests_Iu.ttcn @@ -0,0 +1,36 @@ +module SGSN_Tests_Iu { + +import from Osmocom_Types all; + +import from SGSN_Tests all; + +import from RAN_Adapter all; +import from RAN_Emulation all; +import from RANAP_Templates all; +import from RANAP_PDU_Descriptions all; +import from RANAP_IEs all; + + +private function f_TC_iu_attach(charstring id) runs on BSSGP_ConnHdlr { + var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip)); + + /* first perform regular attach */ + f_gmm_attach(umts_aka_challenge := true, force_gsm_sres := false, gb_idx := 3); + setverdict(pass); +} +testcase TC_iu_attach() runs on test_CT { + var BSSGP_ConnHdlr vc_conn; + f_init(); + f_sleep(1.0); + vc_conn := f_start_handler(refers(f_TC_iu_attach), testcasename(), g_gb, 1001); + vc_conn.done; +} + + + +control { + execute( TC_iu_attach() ); +} + + +} -- To view, visit https://gerrit.osmocom.org/13866 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I66069e31c30d33934ad57cc2b8794f56ffd5c7d6 Gerrit-Change-Number: 13866 Gerrit-PatchSet: 1 Gerrit-Owner: Harald Welte <laforge at gnumonks.org> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190502/20f3d3c0/attachment.htm>