From 14d3a8e7c39e2f8d93c7bff2e1a3ec1e6af0b4ec Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Thu, 28 Jan 2021 21:43:16 +0100 Subject: [PATCH] GBProxy_Tests: fix TC_rim_* tests The TC_rim tests do not use the RIM templates from Osmocom_Gb_Types as intended. Change-Id: Ie484f288aa0515ef4df4a3cf7f8a347a3f3cf587 Related: SYS#5103 --- gbproxy/GBProxy_Tests.ttcn | 220 +++++++++++++++++++++++----------- library/Osmocom_Gb_Types.ttcn | 96 +++++++++++++++ 2 files changed, 248 insertions(+), 68 deletions(-) diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn index 487952129..506ed389d 100644 --- a/gbproxy/GBProxy_Tests.ttcn +++ b/gbproxy/GBProxy_Tests.ttcn @@ -2901,20 +2901,35 @@ private function f_TC_rim_info_req(integer sgsn_idx, integer pcu_idx, integer bv runs on GlobalTest_CT { var BssgpCellId cell_id := g_pcu[pcu_idx].cfg.bvc[bvc_idx].cell_id; - var template (value) RIM_Routing_Information ri_pcu; - var template (value) RIM_Routing_Information ri_sgsn; - var template (value) RAN_Information_Request_RIM_Container cont; + var template (value) RAN_Information_Request_RIM_Container cont_tx; + var template RAN_Information_Request_RIM_Container cont_rx; + var template RIM_Routing_Address ra_pcu; + var template RIM_Routing_Address ra_sgsn; - ri_sgsn := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id_sgsn)); - ri_pcu := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id)); - cont := ts_RAN_Information_Request_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), - ts_RIM_Sequence_Number(0), - ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP)); - f_rim_pcu2sgsn(ts_RAN_INFORMATION_REQUEST(dst := ri_sgsn, src := ri_pcu, cont := cont), - tr_RAN_INFORMATION_REQUEST(dst := ri_sgsn, src := ri_pcu, cont := cont), - pcu_idx); - f_rim_sgsn2pcu(ts_RAN_INFORMATION_REQUEST(dst := ri_pcu, src := ri_sgsn, cont := cont), - tr_RAN_INFORMATION_REQUEST(dst := ri_pcu, src := ri_sgsn, cont := cont), + ra_pcu := t_RIM_Routing_Address_cid(cell_id); + ra_sgsn := t_RIM_Routing_Address_cid(cell_id_sgsn); + + cont_tx := ts_RAN_Information_Request_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), + ts_RIM_Sequence_Number(0), + ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP)); + cont_rx := tr_RAN_Information_Request_RIM_Container(tr_RIM_Application_Identity(RIM_APP_ID_NACC), + tr_RIM_Sequence_Number(0), + tr_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP)); + + f_rim_pcu2sgsn(ts_RAN_INFORMATION_REQUEST(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_tx), + tr_RAN_INFORMATION_REQUEST(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_rx), + pcu_idx); + + f_rim_sgsn2pcu(ts_RAN_INFORMATION_REQUEST(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_tx), + tr_RAN_INFORMATION_REQUEST(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_rx), sgsn_idx, pcu_idx); } testcase TC_rim_info_req() runs on GlobalTest_CT @@ -2930,20 +2945,36 @@ private function f_TC_rim_info(integer sgsn_idx, integer pcu_idx, integer bvc_id runs on GlobalTest_CT { var BssgpCellId cell_id := g_pcu[pcu_idx].cfg.bvc[bvc_idx].cell_id; - var template (value) RIM_Routing_Information ri_pcu; - var template (value) RIM_Routing_Information ri_sgsn; - var template (value) RAN_Information_RIM_Container cont; + var template (value) RAN_Information_RIM_Container cont_tx; + var template RAN_Information_RIM_Container cont_rx; + var template RIM_Routing_Address ra_pcu; + var template RIM_Routing_Address ra_sgsn; - ri_sgsn := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id_sgsn)); - ri_pcu := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id)); - cont := ts_RAN_Information_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), - ts_RIM_Sequence_Number(0), - ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP)); - f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION(dst := ri_sgsn, src := ri_pcu, cont := cont), - tr_PDU_BSSGP_RAN_INFORMATION(dst := ri_sgsn, src := ri_pcu, cont := cont), - pcu_idx); - f_rim_sgsn2pcu(ts_PDU_BSSGP_RAN_INFORMATION(dst := ri_pcu, src := ri_sgsn, cont := cont), - tr_PDU_BSSGP_RAN_INFORMATION(dst := ri_pcu, src := ri_sgsn, cont := cont), + ra_pcu := t_RIM_Routing_Address_cid(cell_id); + ra_sgsn := t_RIM_Routing_Address_cid(cell_id_sgsn); + + cont_tx := ts_RAN_Information_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), + ts_RIM_Sequence_Number(0), + ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP)); + + cont_rx := tr_RAN_Information_RIM_Container(tr_RIM_Application_Identity(RIM_APP_ID_NACC), + tr_RIM_Sequence_Number(0), + tr_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP)); + + f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_tx), + tr_PDU_BSSGP_RAN_INFORMATION(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_rx), + pcu_idx); + + f_rim_sgsn2pcu(ts_PDU_BSSGP_RAN_INFORMATION(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_tx), + tr_PDU_BSSGP_RAN_INFORMATION(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_rx), sgsn_idx, pcu_idx); } testcase TC_rim_info() runs on GlobalTest_CT @@ -2959,19 +2990,34 @@ private function f_TC_rim_info_ack(integer sgsn_idx, integer pcu_idx, integer bv runs on GlobalTest_CT { var BssgpCellId cell_id := g_pcu[pcu_idx].cfg.bvc[bvc_idx].cell_id; - var template (value) RIM_Routing_Information ri_pcu; - var template (value) RIM_Routing_Information ri_sgsn; - var template (value) RAN_Information_Ack_RIM_Container cont; + var template (value) RAN_Information_Ack_RIM_Container cont_tx; + var template RAN_Information_Ack_RIM_Container cont_rx; + var template RIM_Routing_Address ra_pcu; + var template RIM_Routing_Address ra_sgsn; - ri_sgsn := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id_sgsn)); - ri_pcu := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id)); - cont := ts_RAN_Information_Ack_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), - ts_RIM_Sequence_Number(0)); - f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION_ACK(dst := ri_sgsn, src := ri_pcu, cont := cont), - tr_PDU_BSSGP_RAN_INFORMATION_ACK(dst := ri_sgsn, src := ri_pcu, cont := cont), - pcu_idx); - f_rim_sgsn2pcu(ts_PDU_BSSGP_RAN_INFORMATION_ACK(dst := ri_pcu, src := ri_sgsn, cont := cont), - tr_PDU_BSSGP_RAN_INFORMATION_ACK(dst := ri_pcu, src := ri_sgsn, cont := cont), + ra_pcu := t_RIM_Routing_Address_cid(cell_id); + ra_sgsn := t_RIM_Routing_Address_cid(cell_id_sgsn); + + cont_tx := ts_RAN_Information_Ack_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), + ts_RIM_Sequence_Number(0)); + + cont_rx := tr_RAN_Information_Ack_RIM_Container(tr_RIM_Application_Identity(RIM_APP_ID_NACC), + tr_RIM_Sequence_Number(0)); + + f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION_ACK(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_tx), + tr_PDU_BSSGP_RAN_INFORMATION_ACK(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_rx), + pcu_idx); + + f_rim_sgsn2pcu(ts_PDU_BSSGP_RAN_INFORMATION_ACK(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_tx), + tr_PDU_BSSGP_RAN_INFORMATION_ACK(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_rx), sgsn_idx, pcu_idx); } testcase TC_rim_info_ack() runs on GlobalTest_CT @@ -2987,20 +3033,36 @@ private function f_TC_rim_info_error(integer sgsn_idx, integer pcu_idx, integer runs on GlobalTest_CT { var BssgpCellId cell_id := g_pcu[pcu_idx].cfg.bvc[bvc_idx].cell_id; - var template (value) RIM_Routing_Information ri_pcu; - var template (value) RIM_Routing_Information ri_sgsn; - var template (value) RAN_Information_Error_RIM_Container cont; + var template (value) RAN_Information_Error_RIM_Container cont_tx; + var template RAN_Information_Error_RIM_Container cont_rx; + var template RIM_Routing_Address ra_pcu; + var template RIM_Routing_Address ra_sgsn; - ri_sgsn := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id_sgsn)); - ri_pcu := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id)); - cont := ts_RAN_Information_Error_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), - ts_BSSGP_CAUSE(BSSGP_CAUSE_EQUIMENT_FAILURE), - omit, valueof(t_BVC_UNBLOCK(23))); - f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := ri_sgsn, src := ri_pcu, cont := cont), - tr_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := ri_sgsn, src := ri_pcu, cont := cont), - pcu_idx); - f_rim_sgsn2pcu(ts_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := ri_pcu, src := ri_sgsn, cont := cont), - tr_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := ri_pcu, src := ri_sgsn, cont := cont), + ra_pcu := t_RIM_Routing_Address_cid(cell_id); + ra_sgsn := t_RIM_Routing_Address_cid(cell_id_sgsn); + + cont_tx := ts_RAN_Information_Error_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), + ts_BSSGP_CAUSE(BSSGP_CAUSE_EQUIMENT_FAILURE), + omit, valueof(t_BVC_UNBLOCK(23))); + + cont_rx := tr_RAN_Information_Error_RIM_Container(tr_RIM_Application_Identity(RIM_APP_ID_NACC), + t_BSSGP_CAUSE(BSSGP_CAUSE_EQUIMENT_FAILURE), + omit, enc_PDU_BSSGP(valueof(t_BVC_UNBLOCK(23)))); + + f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_tx), + tr_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_rx), + pcu_idx); + + f_rim_sgsn2pcu(ts_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_tx), + tr_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_rx), sgsn_idx, pcu_idx); } testcase TC_rim_info_error() runs on GlobalTest_CT @@ -3011,29 +3073,51 @@ testcase TC_rim_info_error() runs on GlobalTest_CT f_cleanup(); } +////////////////// /* RAN-INFORMATION-APPLICATION-ERROR */ private function f_TC_rim_info_app_error(integer sgsn_idx, integer pcu_idx, integer bvc_idx := 0) runs on GlobalTest_CT { var BssgpCellId cell_id := g_pcu[pcu_idx].cfg.bvc[bvc_idx].cell_id; - var template (value) RIM_Routing_Information ri_pcu; - var template (value) RIM_Routing_Information ri_sgsn; - var template (value) Application_Error_Container app_cont; - var template (value) RAN_Information_Application_Error_RIM_Container cont; + var template (value) Application_Error_Container app_cont_tx; + var template Application_Error_Container app_cont_rx; + var template (value) RAN_Information_Application_Error_RIM_Container cont_tx; + var template RAN_Information_Application_Error_RIM_Container cont_rx; + var template RIM_Routing_Address ra_pcu; + var template RIM_Routing_Address ra_sgsn; - ri_sgsn := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id_sgsn)); - ri_pcu := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, t_RIM_Routing_Address_cid(cell_id)); - app_cont := tsu_Application_Error_Container_NACC(cell_id, 23, - tsu_Application_Container_IE_NACC_req(cell_id)); - cont := ts_RAN_Information_Application_Error_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), - ts_RIM_Sequence_Number(0), - ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP), - omit, app_cont); - f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(dst := ri_sgsn, src := ri_pcu, cont := cont), - tr_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(dst := ri_sgsn, src := ri_pcu, cont := cont), - pcu_idx); - f_rim_sgsn2pcu(ts_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(dst := ri_pcu, src := ri_sgsn, cont := cont), - tr_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(dst := ri_pcu, src := ri_sgsn, cont := cont), + ra_pcu := t_RIM_Routing_Address_cid(cell_id); + ra_sgsn := t_RIM_Routing_Address_cid(cell_id_sgsn); + + app_cont_tx := tsu_Application_Error_Container_NACC(cell_id, 23, + tsu_Application_Container_IE_NACC_req(cell_id)); + + app_cont_rx := rsu_Application_Error_Container_NACC(cell_id, 23, + rsu_Application_Container_IE_NACC_req(cell_id)); + + cont_tx := ts_RAN_Information_Application_Error_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), + ts_RIM_Sequence_Number(0), + ts_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP), + omit, app_cont_tx); + cont_rx := tr_RAN_Information_Application_Error_RIM_Container(tr_RIM_Application_Identity(RIM_APP_ID_NACC), + tr_RIM_Sequence_Number(0), + tr_RIM_PDU_Indications(false, RIM_PDU_TYPE_STOP), + omit, app_cont_rx); + + f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_tx), + tr_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + cont := cont_rx), + pcu_idx); + + f_rim_sgsn2pcu(ts_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_tx), + tr_PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR(dst := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), + src := tr_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), + cont := cont_rx), sgsn_idx, pcu_idx); } testcase TC_rim_info_app_error() runs on GlobalTest_CT diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn index 97412b89a..cbaeb72b0 100644 --- a/library/Osmocom_Gb_Types.ttcn +++ b/library/Osmocom_Gb_Types.ttcn @@ -2693,6 +2693,21 @@ octetstring sdu) := { rIM_Protocol_Version_Number := ver, sON_Transfer_Application_Identity := son_app_id } + template RAN_Information_Ack_RIM_Container + tr_RAN_Information_Ack_RIM_Container(template RIM_Application_Identity app_id := ?, + template RIM_Sequence_Number seq := ?, + template RIM_Protocol_Version_Number ver := omit, + template SON_Transfer_Application_Identity_TLV son_app_id := omit) := { + iEI := '5A'O, + ext := '1'B, + lengthIndicator := { + length1 := ? + }, + rIM_Application_Identity := app_id, + rIM_Sequence_Number := seq, + rIM_Protocol_Version_Number := ver, + sON_Transfer_Application_Identity := son_app_id + } /* 3GPP TS 48.018 11.3.62a.4 */ template (value) RAN_Information_Error_RIM_Container @@ -2719,6 +2734,30 @@ octetstring sdu) := { }, sON_Transfer_Application_Identity := son_app_id } + template RAN_Information_Error_RIM_Container + tr_RAN_Information_Error_RIM_Container(template RIM_Application_Identity app_id := ?, + template Cause_BSSGP cause := ?, + template RIM_Protocol_Version_Number ver := omit, + template octetstring pdu := ?, + template SON_Transfer_Application_Identity_TLV son_app_id := omit) := { + iEI := '5B'O, + ext := '1'B, + lengthIndicator := { + length1 := ? + }, + rIM_Application_Identity := app_id, + rIM_cause := cause, + rIM_Protocol_Version_Number := ver, + pDU_in_Error:= { + iEI := '15'O, + ext := '1'B, + lengthIndicator := { + length1 := ? + }, + erroneous_BSSGP_PDU := pdu + }, + sON_Transfer_Application_Identity := son_app_id + } /* 3GPP TS 48.018 11.3.62a.5 */ template (value) RAN_Information_Application_Error_RIM_Container @@ -2740,6 +2779,25 @@ octetstring sdu) := { application_Error_Container := cont, sON_Transfer_Application_Identity := son_app_id } + template RAN_Information_Application_Error_RIM_Container + tr_RAN_Information_Application_Error_RIM_Container(template RIM_Application_Identity app_id := ?, + template RIM_Sequence_Number seq := ?, + template RIM_PDU_Indications ind := ?, + template RIM_Protocol_Version_Number ver := omit, + template Application_Error_Container cont := ?, + template SON_Transfer_Application_Identity_TLV son_app_id := omit) := { + iEI := '59'O, + ext := '1'B, + lengthIndicator := { + length1 := ? + }, + rIM_Application_Identity := app_id, + rIM_Sequence_Number := seq, + rIM_PDU_Indications := ind, + rIM_Protocol_Version_Number := ver, + application_Error_Container := cont, + sON_Transfer_Application_Identity := son_app_id + } /* 3GPP TS 48.018 11.3.63.1 */ @@ -2775,6 +2833,15 @@ octetstring sdu) := { }, reporting_Cell_Identifier := t_Cell_Identifier_V(cid) } + template RAN_Information_Request_Application_Container_NACC + tr_RAN_Information_Request_Application_Container_NACC(template BssgpCellId cid := ?) := { + iEI := '4D'O, + ext := '1'B, + lengthIndicator := { + length1 := ? + }, + reporting_Cell_Identifier := t_Cell_Identifier_V(cid) + } /* 3GPP TS 48.018 11.3.63.1.2 */ template (value) RAN_Information_Request_Application_Container_SI3 @@ -2869,6 +2936,12 @@ octetstring sdu) := { template (value) Application_Container_IE_NACC app_cont) := { nacc := ts_Application_Error_Container_NACC(cid, cause, app_cont) } + template Application_Error_Container + rsu_Application_Error_Container_NACC(template BssgpCellId cid := ?, + template integer cause := ?, + template Application_Container_IE_NACC app_cont := ?) := { + nacc := tr_Application_Error_Container_NACC(cid, cause, app_cont) + } template (value) Application_Error_Container tsu_Application_Error_Container_SI3(template (value) BssgpCellId cid, integer cause, @@ -2895,10 +2968,33 @@ octetstring sdu) := { nACC_cause := int2oct(cause, 1), erroneousApplicationContainer := app_cont } + function tr_Application_Error_Container_NACC(template BssgpCellId cid := ?, + template integer cause := ?, + template Application_Container_IE_NACC app_cont := ?) + return template Application_Error_Container_NACC { + var template Application_Error_Container_NACC ret; + ret.iEI := '56'O; + ret.ext := '1'B; + ret.lengthIndicator := { length1 := ? }; + ret.erroneousApplicationContainer := app_cont; + if (istemplatekind(cause, "*")) { + ret.nACC_cause := *; + } else if (istemplatekind(cause, "?")) { + ret.nACC_cause := ?; + } else { + ret.nACC_cause := int2oct(valueof(cause), 1); + } + return ret; + } + template (value) Application_Container_IE_NACC tsu_Application_Container_IE_NACC_req(template (value) BssgpCellId cid) := { rAN_Information_Request_Application_Container := ts_RAN_Information_Request_Application_Container_NACC(cid) } + template Application_Container_IE_NACC + rsu_Application_Container_IE_NACC_req(template BssgpCellId cid := ?) := { + rAN_Information_Request_Application_Container := tr_RAN_Information_Request_Application_Container_NACC(cid) + } template (value) Application_Container_IE_NACC tsu_Application_Container_IE_NACC(template (value) BssgpCellId cid, boolean psi_type, integer si_psi_num, octetstring si_psi) := { rAN_Information_Application_Container := ts_RAN_Information_Application_Container_NACC(cid, psi_type, si_psi_num, si_psi)