diff options
author | Vadim Yanitskiy <vyanitskiy@sysmocom.de> | 2022-05-01 16:08:30 +0300 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2022-05-03 12:52:58 +0000 |
commit | 866afc2c61074be1fb7afced67661bf42125bc7d (patch) | |
tree | 125ece35899f68745b189490c233f13647a401bd | |
parent | 0dd96e9391384aa189e4e48e843a2bc1fc77ae15 (diff) |
BTS_Tests: add TC_ipa_crcx_ack_addr reproducing OS#5242
Change-Id: Ic85904c967238555a6243a3df2d9225b957d5a5c
Related: OS#5242
-rw-r--r-- | bts/BTS_Tests.ttcn | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn index c2de5383..5837a039 100644 --- a/bts/BTS_Tests.ttcn +++ b/bts/BTS_Tests.ttcn @@ -5036,6 +5036,39 @@ testcase TC_ipa_crcx_sdcch_not_active() runs on test_CT { vc_conn.done; } +/* Make sure that CRCX ACK contains a valid listen address (see OS#5242) */ +private function f_TC_ipa_crcx_ack_addr(charstring id) runs on ConnHdlr { + var OCT4 bind_ip := f_inet_addr("192.168.1.1"); + var PortNumber bind_port := 16811; + var RSL_Message crcx_ack; + + crcx_ack := f_rsl_transceive_ret(ts_RSL_IPA_CRCX(g_chan_nr, bind_ip, bind_port), + tr_RSL_IPA_CRCX_ACK(g_chan_nr, ?, ?, ?), + "IPA CRCX ACK"); + var HostName bts_bind_ip := f_inet_ntoa(crcx_ack.ies[2].body.ipa_local_ip); + if (match(bts_bind_ip, "0.0.0.0")) { + setverdict(fail, "CRCX ACK indicates nonsense addr ", bts_bind_ip); + } + + var uint16_t conn_id := crcx_ack.ies[1].body.ipa_conn_id; + f_rsl_transceive(ts_RSL_IPA_DLCX(g_chan_nr, conn_id), + tr_RSL_IPA_DLCX_ACK(g_chan_nr, ?, ?), + "IPA DLCX ACK"); +} +testcase TC_ipa_crcx_ack_addr() runs on test_CT { + var ConnHdlrPars pars; + var ConnHdlr vc_conn; + f_init(); + + pars := valueof(t_Pars(t_RslChanNr_Bm(1), ts_RSL_ChanMode(RSL_CHRT_TCH_F, RSL_CMOD_SP_GSM1))); + vc_conn := f_start_handler(refers(f_TC_ipa_crcx_ack_addr), pars); + vc_conn.done; + + pars := valueof(t_Pars(ts_RslChanNr_Lm(5, 0), ts_RSL_ChanMode(RSL_CHRT_TCH_H, RSL_CMOD_SP_GSM1))); + vc_conn := f_start_handler(refers(f_TC_ipa_crcx_ack_addr), pars); + vc_conn.done; +} + /*********************************************************************** * PCU Socket related tests @@ -8558,6 +8591,7 @@ control { execute( TC_ipa_crcx_mdcx_dlcx_not_active() ); execute( TC_ipa_crcx_mdcx_mdcx_dlcx_not_active() ); execute( TC_ipa_crcx_sdcch_not_active() ); + execute( TC_ipa_crcx_ack_addr() ); if (mp_pcu_socket != "") { execute( TC_paging_imsi_200percent_with_ps() ); |