pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/38538?usp=email )
Change subject: RAN_Emulation: Introduce field ranap_connect_ind_auto_res ......................................................................
RAN_Emulation: Introduce field ranap_connect_ind_auto_res
This field allows skipping automatic response of the connect_ind, hence allowing ConnHdlr to totally skip it, delay it, or generate a CREF by means of sending RAN_Conn_Prim:MSC_CONN_PRIM_DISC_REQ to RAN_Emulation, as per ITU Q.711 Figure 8.
Change-Id: I5a69990e3a0839dd3c25c7dc66e6bcf66123fbff --- M hnbgw/HNBGW_Tests.ttcn M library/RAN_Emulation.ttcnpp M msc/BSC_ConnectionHandler.ttcn M sgsn/SGSN_Tests.ttcn 4 files changed, 10 insertions(+), 2 deletions(-)
Approvals: laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified fixeria: Looks good to me, approved
diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn index 30e624f..4ab5a90 100644 --- a/hnbgw/HNBGW_Tests.ttcn +++ b/hnbgw/HNBGW_Tests.ttcn @@ -232,6 +232,7 @@ const RanOps MSC_RanOps := { ranap_create_cb := refers(RAN_Emulation.RanapExpectedCreateCallback), ranap_unitdata_cb := refers(MSC_UnitdataCallback), + ranap_connect_ind_auto_res := true, ps_domain := false, decode_dtap := false, role_ms := false, diff --git a/library/RAN_Emulation.ttcnpp b/library/RAN_Emulation.ttcnpp index fbe921d..c221c72 100644 --- a/library/RAN_Emulation.ttcnpp +++ b/library/RAN_Emulation.ttcnpp @@ -734,6 +734,9 @@ #ifdef RAN_EMULATION_RANAP RanapCreateCallback ranap_create_cb optional, RanapUnitdataCallback ranap_unitdata_cb optional, + /* Set to false if want to handle response to RANAP_N_CONNECT_ind. + * This is useful to eg. trigger SCCP CREF. */ + boolean ranap_connect_ind_auto_res, boolean ps_domain, #endif boolean decode_dtap, @@ -1000,8 +1003,10 @@ /* Notify client that we received an SCCP CR without user data */ CLIENT.send(ts_RANAP_Conn_Req(rconn_ind.callingAddress, rconn_ind.calledAddress, omit)); } - /* confirm connection establishment */ - RANAP.send(ts_RANAP_CONNECT_res(rconn_ind.connectionId, omit)); + if (g_ran_ops.ranap_connect_ind_auto_res) { + /* confirm connection establishment */ + RANAP.send(ts_RANAP_CONNECT_res(rconn_ind.connectionId, omit)); + } } /* SCCP -> Client: connection-oriented data in existing connection */ [] RANAP.receive(RANAP_N_DATA_ind:?) -> value rdata_ind { diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 467f387..e436117 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -273,6 +273,7 @@ unitdata_cb := refers(BscUnitdataCallback), ranap_create_cb := refers(RAN_Emulation.RanapExpectedCreateCallback), ranap_unitdata_cb := refers(RncUnitdataCallback), + ranap_connect_ind_auto_res := true, ps_domain := false, decode_dtap := true, role_ms := true, diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn index 1099798..0f5da29 100644 --- a/sgsn/SGSN_Tests.ttcn +++ b/sgsn/SGSN_Tests.ttcn @@ -437,6 +437,7 @@ const RanOps RNC_RanOps := { ranap_create_cb := refers(RAN_Emulation.RanapExpectedCreateCallback), ranap_unitdata_cb := refers(RncUnitdataCallback), + ranap_connect_ind_auto_res := true, ps_domain := true, decode_dtap := true, role_ms := true,