diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2014-09-18 09:57:47 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-10-09 17:41:06 +0200 |
commit | 2ec2757def5c54ec200eeb0fbf9864e31b471a82 (patch) | |
tree | 2b31c4d344ba2f36bc70da53370d1da8a6959129 /openbsc/tests/gbproxy/gbproxy_test.c | |
parent | 258ce3ded57e742889122c68d6a217d14a95edcc (diff) |
gbproxy/test: Test IMSI acquisition for RA UDP REQ
When a MS is state GMM_REGISTERED enters a new RA, it sends a RA
Update Request which is then handled by a gbproxy that possibly
doesn't have a matching tlli_info. In this case, depending on the
configuration an identification procedure to acquire the IMSI must be
started.
This adds tests to test_gbproxy_imsi_acquisition():
- IMSI acquisition triggered by a RA Update Request message
- Reaction to repeated RA Update Request messages, like it could be
caused by packet loss between PCU and gbproxy.
Sponsored-by: On-Waves ehf
Diffstat (limited to 'openbsc/tests/gbproxy/gbproxy_test.c')
-rw-r--r-- | openbsc/tests/gbproxy/gbproxy_test.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/openbsc/tests/gbproxy/gbproxy_test.c b/openbsc/tests/gbproxy/gbproxy_test.c index 764027940..80bf905e6 100644 --- a/openbsc/tests/gbproxy/gbproxy_test.c +++ b/openbsc/tests/gbproxy/gbproxy_test.c @@ -2203,6 +2203,7 @@ static void test_gbproxy_imsi_acquisition() const uint32_t sgsn_ptmsi = 0xefe2b700; const uint32_t local_sgsn_tlli = 0xefe2b700; const uint32_t random_sgsn_tlli = 0x7c69fb81; + const uint32_t random_sgsn_tlli2 = 0x7eb52dfb; const uint32_t bss_ptmsi = 0xc00f7304; const uint32_t local_bss_tlli = 0xc00f7304; @@ -2404,6 +2405,43 @@ static void test_gbproxy_imsi_acquisition() dump_peers(stdout, 0, 0, &gbcfg); + /* RA Update request */ + + send_llc_ul_ui(nsi, "RA UPD REQ", &bss_peer[0], 0x1002, + foreign_bss_tlli, &rai_unknown, 0x7080, + GPRS_SAPI_GMM, bss_nu++, + dtap_ra_upd_req, sizeof(dtap_ra_upd_req)); + + send_llc_ul_ui(nsi, "IDENT RESPONSE", &bss_peer[0], 0x1002, + foreign_bss_tlli, &rai_bss, cell_id, + GPRS_SAPI_GMM, bss_nu++, + dtap_identity_resp, sizeof(dtap_identity_resp)); + + dump_peers(stdout, 0, 0, &gbcfg); + + send_llc_dl_ui(nsi, "RA UDP ACC", &sgsn_peer, 0x1002, + random_sgsn_tlli2, 1, imsi, sizeof(imsi), + GPRS_SAPI_GMM, sgsn_nu++, + dtap_ra_upd_acc, sizeof(dtap_ra_upd_acc)); + + dump_peers(stdout, 0, 0, &gbcfg); + + /* Detach */ + + send_llc_ul_ui(nsi, "DETACH REQ", &bss_peer[0], 0x1002, + local_bss_tlli, &rai_bss, cell_id, + GPRS_SAPI_GMM, bss_nu++, + dtap_detach_req, sizeof(dtap_detach_req)); + + dump_peers(stdout, 0, 0, &gbcfg); + + send_llc_dl_ui(nsi, "DETACH ACC", &sgsn_peer, 0x1002, + local_sgsn_tlli, 1, imsi, sizeof(imsi), + GPRS_SAPI_GMM, sgsn_nu++, + dtap_detach_acc, sizeof(dtap_detach_acc)); + + dump_peers(stdout, 0, 0, &gbcfg); + /* Special case: Repeated Attach Requests */ send_llc_ul_ui(nsi, "ATTACH REQUEST", &bss_peer[0], 0x1002, @@ -2432,6 +2470,25 @@ static void test_gbproxy_imsi_acquisition() dump_peers(stdout, 0, 0, &gbcfg); + /* Special case: Repeated RA Update Requests */ + + send_llc_ul_ui(nsi, "RA UPD REQ", &bss_peer[0], 0x1002, + foreign_bss_tlli, &rai_unknown, 0x7080, + GPRS_SAPI_GMM, bss_nu++, + dtap_ra_upd_req, sizeof(dtap_ra_upd_req)); + + send_llc_ul_ui(nsi, "RA UPD REQ", &bss_peer[0], 0x1002, + foreign_bss_tlli, &rai_unknown, 0x7080, + GPRS_SAPI_GMM, bss_nu++, + dtap_ra_upd_req, sizeof(dtap_ra_upd_req)); + + send_llc_ul_ui(nsi, "DETACH REQ", &bss_peer[0], 0x1002, + foreign_bss_tlli, &rai_bss, cell_id, + GPRS_SAPI_GMM, bss_nu++, + dtap_detach_req, sizeof(dtap_detach_req)); + + dump_peers(stdout, 0, 0, &gbcfg); + dump_global(stdout, 0); gbprox_reset(&gbcfg); |