From 32b552539ab942b0a4f61260c834ff0375592151 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Thu, 13 Jul 2017 02:11:57 +0200 Subject: remove files obviously unrelated to gprs Change-Id: I809f69b6a2829bd4391a51bc796baa1aeddee45e --- src/Makefile.am | 29 - tests/abis/Makefile.am | 34 - tests/abis/abis_test.c | 93 - tests/abis/abis_test.ok | 9 - tests/bsc-nat-trie/Makefile.am | 17 - tests/bsc-nat-trie/bsc_nat_trie_test.c | 87 - tests/bsc-nat-trie/bsc_nat_trie_test.ok | 20 - tests/bsc-nat-trie/prefixes.csv | 25 - tests/bsc-nat/Makefile.am | 59 - tests/bsc-nat/barr.cfg | 12 - tests/bsc-nat/barr_dup.cfg | 2 - tests/bsc-nat/bsc_data.c | 275 --- tests/bsc-nat/bsc_nat_test.c | 1584 ----------------- tests/bsc-nat/bsc_nat_test.ok | 39 - tests/bsc-nat/prefixes.csv | 2 - tests/bsc/Makefile.am | 45 - tests/bsc/bsc_test.c | 209 --- tests/bsc/bsc_test.ok | 4 - tests/channel/Makefile.am | 35 - tests/channel/channel_test.c | 90 - tests/channel/channel_test.ok | 1 - tests/db/Makefile.am | 47 - tests/db/db_test.c | 286 --- tests/db/db_test.err | 2 - tests/db/db_test.ok | 4 - tests/db/hlr.sqlite3 | Bin 29696 -> 0 bytes tests/gsm0408/Makefile.am | 34 - tests/gsm0408/gsm0408_test.c | 697 -------- tests/gsm0408/gsm0408_test.ok | 204 --- tests/mgcp/Makefile.am | 92 - tests/mgcp/mgcp_test.c | 1227 ------------- tests/mgcp/mgcp_test.ok | 480 ----- tests/mgcp/mgcp_transcoding_test.c | 654 ------- tests/mgcp/mgcp_transcoding_test.ok | 539 ------ tests/mgcp/mgcpgw_client_test.c | 165 -- tests/mgcp/mgcpgw_client_test.err | 1 - tests/mgcp/mgcpgw_client_test.ok | 31 - tests/mm_auth/Makefile.am | 37 - tests/mm_auth/mm_auth_test.c | 84 - tests/mm_auth/mm_auth_test.ok | 1 - tests/msc_vlr/Makefile.am | 160 -- tests/msc_vlr/msc_vlr_test_gsm_authen.c | 888 ---------- tests/msc_vlr/msc_vlr_test_gsm_authen.err | 1946 --------------------- tests/msc_vlr/msc_vlr_test_gsm_authen.ok | 1 - tests/msc_vlr/msc_vlr_test_gsm_ciph.c | 1436 --------------- tests/msc_vlr/msc_vlr_test_gsm_ciph.err | 1647 ----------------- tests/msc_vlr/msc_vlr_test_gsm_ciph.ok | 1 - tests/msc_vlr/msc_vlr_test_hlr_reject.c | 425 ----- tests/msc_vlr/msc_vlr_test_hlr_reject.err | 1132 ------------ tests/msc_vlr/msc_vlr_test_hlr_reject.ok | 1 - tests/msc_vlr/msc_vlr_test_hlr_timeout.c | 114 -- tests/msc_vlr/msc_vlr_test_hlr_timeout.err | 183 -- tests/msc_vlr/msc_vlr_test_hlr_timeout.ok | 1 - tests/msc_vlr/msc_vlr_test_ms_timeout.c | 183 -- tests/msc_vlr/msc_vlr_test_ms_timeout.err | 333 ---- tests/msc_vlr/msc_vlr_test_ms_timeout.ok | 1 - tests/msc_vlr/msc_vlr_test_no_authen.c | 508 ------ tests/msc_vlr/msc_vlr_test_no_authen.err | 1165 ------------ tests/msc_vlr/msc_vlr_test_no_authen.ok | 1 - tests/msc_vlr/msc_vlr_test_reject_concurrency.c | 379 ---- tests/msc_vlr/msc_vlr_test_reject_concurrency.err | 1763 ------------------- tests/msc_vlr/msc_vlr_test_reject_concurrency.ok | 1 - tests/msc_vlr/msc_vlr_test_rest.c | 188 -- tests/msc_vlr/msc_vlr_test_rest.err | 475 ----- tests/msc_vlr/msc_vlr_test_rest.ok | 1 - tests/msc_vlr/msc_vlr_test_umts_authen.c | 558 ------ tests/msc_vlr/msc_vlr_test_umts_authen.err | 1367 --------------- tests/msc_vlr/msc_vlr_test_umts_authen.ok | 1 - tests/msc_vlr/msc_vlr_tests.c | 763 -------- tests/msc_vlr/msc_vlr_tests.h | 154 -- tests/nanobts_omlattr/Makefile.am | 34 - tests/nanobts_omlattr/nanobts_omlattr_test.c | 284 --- tests/nanobts_omlattr/nanobts_omlattr_test.ok | 26 - tests/slhc/Makefile.am | 15 - tests/slhc/slhc_test.c | 272 --- tests/slhc/slhc_test.ok | 154 -- tests/smpp/Makefile.am | 40 - tests/smpp/smpp_test.c | 73 - tests/smpp/smpp_test.err | 2 - tests/smpp/smpp_test.ok | 1 - tests/smpp_test_runner.py | 137 -- tests/sms_queue/Makefile.am | 49 - tests/sms_queue/sms_queue_test.c | 215 --- tests/sms_queue/sms_queue_test.err | 0 tests/sms_queue/sms_queue_test.ok | 98 -- tests/subscr/Makefile.am | 43 - tests/subscr/bsc_subscr_test.c | 130 -- tests/subscr/bsc_subscr_test.err | 17 - tests/subscr/bsc_subscr_test.ok | 11 - tests/trau/Makefile.am | 45 - tests/trau/trau_test.c | 84 - tests/trau/trau_test.ok | 10 - tests/vlr/Makefile.am | 22 - tests/vlr/vlr_test.c | 694 -------- 94 files changed, 25488 deletions(-) delete mode 100644 tests/abis/Makefile.am delete mode 100644 tests/abis/abis_test.c delete mode 100644 tests/abis/abis_test.ok delete mode 100644 tests/bsc-nat-trie/Makefile.am delete mode 100644 tests/bsc-nat-trie/bsc_nat_trie_test.c delete mode 100644 tests/bsc-nat-trie/bsc_nat_trie_test.ok delete mode 100644 tests/bsc-nat-trie/prefixes.csv delete mode 100644 tests/bsc-nat/Makefile.am delete mode 100644 tests/bsc-nat/barr.cfg delete mode 100644 tests/bsc-nat/barr_dup.cfg delete mode 100644 tests/bsc-nat/bsc_data.c delete mode 100644 tests/bsc-nat/bsc_nat_test.c delete mode 100644 tests/bsc-nat/bsc_nat_test.ok delete mode 100644 tests/bsc-nat/prefixes.csv delete mode 100644 tests/bsc/Makefile.am delete mode 100644 tests/bsc/bsc_test.c delete mode 100644 tests/bsc/bsc_test.ok delete mode 100644 tests/channel/Makefile.am delete mode 100644 tests/channel/channel_test.c delete mode 100644 tests/channel/channel_test.ok delete mode 100644 tests/db/Makefile.am delete mode 100644 tests/db/db_test.c delete mode 100644 tests/db/db_test.err delete mode 100644 tests/db/db_test.ok delete mode 100644 tests/db/hlr.sqlite3 delete mode 100644 tests/gsm0408/Makefile.am delete mode 100644 tests/gsm0408/gsm0408_test.c delete mode 100644 tests/gsm0408/gsm0408_test.ok delete mode 100644 tests/mgcp/Makefile.am delete mode 100644 tests/mgcp/mgcp_test.c delete mode 100644 tests/mgcp/mgcp_test.ok delete mode 100644 tests/mgcp/mgcp_transcoding_test.c delete mode 100644 tests/mgcp/mgcp_transcoding_test.ok delete mode 100644 tests/mgcp/mgcpgw_client_test.c delete mode 100644 tests/mgcp/mgcpgw_client_test.err delete mode 100644 tests/mgcp/mgcpgw_client_test.ok delete mode 100644 tests/mm_auth/Makefile.am delete mode 100644 tests/mm_auth/mm_auth_test.c delete mode 100644 tests/mm_auth/mm_auth_test.ok delete mode 100644 tests/msc_vlr/Makefile.am delete mode 100644 tests/msc_vlr/msc_vlr_test_gsm_authen.c delete mode 100644 tests/msc_vlr/msc_vlr_test_gsm_authen.err delete mode 100644 tests/msc_vlr/msc_vlr_test_gsm_authen.ok delete mode 100644 tests/msc_vlr/msc_vlr_test_gsm_ciph.c delete mode 100644 tests/msc_vlr/msc_vlr_test_gsm_ciph.err delete mode 100644 tests/msc_vlr/msc_vlr_test_gsm_ciph.ok delete mode 100644 tests/msc_vlr/msc_vlr_test_hlr_reject.c delete mode 100644 tests/msc_vlr/msc_vlr_test_hlr_reject.err delete mode 100644 tests/msc_vlr/msc_vlr_test_hlr_reject.ok delete mode 100644 tests/msc_vlr/msc_vlr_test_hlr_timeout.c delete mode 100644 tests/msc_vlr/msc_vlr_test_hlr_timeout.err delete mode 100644 tests/msc_vlr/msc_vlr_test_hlr_timeout.ok delete mode 100644 tests/msc_vlr/msc_vlr_test_ms_timeout.c delete mode 100644 tests/msc_vlr/msc_vlr_test_ms_timeout.err delete mode 100644 tests/msc_vlr/msc_vlr_test_ms_timeout.ok delete mode 100644 tests/msc_vlr/msc_vlr_test_no_authen.c delete mode 100644 tests/msc_vlr/msc_vlr_test_no_authen.err delete mode 100644 tests/msc_vlr/msc_vlr_test_no_authen.ok delete mode 100644 tests/msc_vlr/msc_vlr_test_reject_concurrency.c delete mode 100644 tests/msc_vlr/msc_vlr_test_reject_concurrency.err delete mode 100644 tests/msc_vlr/msc_vlr_test_reject_concurrency.ok delete mode 100644 tests/msc_vlr/msc_vlr_test_rest.c delete mode 100644 tests/msc_vlr/msc_vlr_test_rest.err delete mode 100644 tests/msc_vlr/msc_vlr_test_rest.ok delete mode 100644 tests/msc_vlr/msc_vlr_test_umts_authen.c delete mode 100644 tests/msc_vlr/msc_vlr_test_umts_authen.err delete mode 100644 tests/msc_vlr/msc_vlr_test_umts_authen.ok delete mode 100644 tests/msc_vlr/msc_vlr_tests.c delete mode 100644 tests/msc_vlr/msc_vlr_tests.h delete mode 100644 tests/nanobts_omlattr/Makefile.am delete mode 100644 tests/nanobts_omlattr/nanobts_omlattr_test.c delete mode 100644 tests/nanobts_omlattr/nanobts_omlattr_test.ok delete mode 100644 tests/slhc/Makefile.am delete mode 100644 tests/slhc/slhc_test.c delete mode 100644 tests/slhc/slhc_test.ok delete mode 100644 tests/smpp/Makefile.am delete mode 100644 tests/smpp/smpp_test.c delete mode 100644 tests/smpp/smpp_test.err delete mode 100644 tests/smpp/smpp_test.ok delete mode 100644 tests/smpp_test_runner.py delete mode 100644 tests/sms_queue/Makefile.am delete mode 100644 tests/sms_queue/sms_queue_test.c delete mode 100644 tests/sms_queue/sms_queue_test.err delete mode 100644 tests/sms_queue/sms_queue_test.ok delete mode 100644 tests/subscr/Makefile.am delete mode 100644 tests/subscr/bsc_subscr_test.c delete mode 100644 tests/subscr/bsc_subscr_test.err delete mode 100644 tests/subscr/bsc_subscr_test.ok delete mode 100644 tests/trau/Makefile.am delete mode 100644 tests/trau/trau_test.c delete mode 100644 tests/trau/trau_test.ok delete mode 100644 tests/vlr/Makefile.am delete mode 100644 tests/vlr/vlr_test.c diff --git a/src/Makefile.am b/src/Makefile.am index bd697385f..2c75750b3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,36 +19,7 @@ AM_LDFLAGS = \ $(COVERAGE_LDFLAGS) \ $(NULL) -# Libraries -SUBDIRS = \ - libcommon \ - libvlr \ - libmgcp \ - libbsc \ - libmsc \ - libtrau \ - libfilter \ - libcommon-cs \ - $(NULL) - # Programs SUBDIRS += \ - osmo-msc \ - osmo-bsc_mgcp \ - utils \ - ipaccess \ gprs \ $(NULL) - -# Conditional Programs -if BUILD_NAT -SUBDIRS += \ - osmo-bsc_nat \ - $(NULL) -endif - -if BUILD_BSC -SUBDIRS += \ - osmo-bsc \ - $(NULL) -endif diff --git a/tests/abis/Makefile.am b/tests/abis/Makefile.am deleted file mode 100644 index 1c5dede3b..000000000 --- a/tests/abis/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - abis_test.ok \ - $(NULL) - -noinst_PROGRAMS = \ - abis_test \ - $(NULL) - -abis_test_SOURCES = \ - abis_test.c \ - $(NULL) - -abis_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(NULL) diff --git a/tests/abis/abis_test.c b/tests/abis/abis_test.c deleted file mode 100644 index 591f8350f..000000000 --- a/tests/abis/abis_test.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * (C) 2012 by Holger Hans Peter Freyther - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include - -#include -#include -#include - -#include -#include -#include - -static const uint8_t load_config[] = { - 0x42, 0x12, 0x00, 0x08, 0x31, 0x36, 0x38, 0x64, - 0x34, 0x37, 0x32, 0x00, 0x13, 0x00, 0x0b, 0x76, - 0x32, 0x30, 0x30, 0x62, 0x31, 0x34, 0x33, 0x64, - 0x30, 0x00, 0x42, 0x12, 0x00, 0x08, 0x31, 0x36, - 0x38, 0x64, 0x34, 0x37, 0x32, 0x00, 0x13, 0x00, - 0x0b, 0x76, 0x32, 0x30, 0x30, 0x62, 0x31, 0x34, - 0x33, 0x64, 0x31, 0x00 -}; - -static void test_sw_selection(void) -{ - struct abis_nm_sw_desc descr[8], tmp; - uint16_t len0, len1; - int rc, pos; - - rc = abis_nm_get_sw_conf(load_config, ARRAY_SIZE(load_config), - &descr[0], ARRAY_SIZE(descr)); - if (rc != 2) { - printf("%s(): FAILED to parse the File Id/File version: %d\n", - __func__, rc); - abort(); - } - - len0 = abis_nm_sw_desc_len(&descr[0], true); - printf("len: %u\n", len0); - printf("file_id: %s\n", osmo_hexdump(descr[0].file_id, descr[0].file_id_len)); - printf("file_ver: %s\n", osmo_hexdump(descr[0].file_version, descr[0].file_version_len)); - - len1 = abis_nm_sw_desc_len(&descr[1], true); - printf("len: %u\n", len1); - printf("file_id: %s\n", osmo_hexdump(descr[1].file_id, descr[1].file_id_len)); - printf("file_ver: %s\n", osmo_hexdump(descr[1].file_version, descr[1].file_version_len)); - - /* start */ - pos = abis_nm_select_newest_sw(descr, rc); - if (pos != 1) { - printf("Selected the wrong version: %d\n", pos); - abort(); - } - printf("SELECTED: %d\n", pos); - - /* shuffle */ - tmp = descr[0]; - descr[0] = descr[1]; - descr[1] = tmp; - pos = abis_nm_select_newest_sw(descr, rc); - if (pos != 0) { - printf("Selected the wrong version: %d\n", pos); - abort(); - } - printf("SELECTED: %d\n", pos); - printf("%s(): OK\n", __func__); -} - -int main(int argc, char **argv) -{ - osmo_init_logging(&log_info); - - test_sw_selection(); - - return EXIT_SUCCESS; -} diff --git a/tests/abis/abis_test.ok b/tests/abis/abis_test.ok deleted file mode 100644 index 8418cad87..000000000 --- a/tests/abis/abis_test.ok +++ /dev/null @@ -1,9 +0,0 @@ -len: 26 -file_id: 31 36 38 64 34 37 32 00 -file_ver: 76 32 30 30 62 31 34 33 64 30 00 -len: 26 -file_id: 31 36 38 64 34 37 32 00 -file_ver: 76 32 30 30 62 31 34 33 64 31 00 -SELECTED: 1 -SELECTED: 0 -test_sw_selection(): OK diff --git a/tests/bsc-nat-trie/Makefile.am b/tests/bsc-nat-trie/Makefile.am deleted file mode 100644 index cf8ebaf20..000000000 --- a/tests/bsc-nat-trie/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -AM_CFLAGS=-Wall -ggdb3 $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBOSMOSCCP_CFLAGS) $(LIBOSMOABIS_CFLAGS) $(COVERAGE_CFLAGS) -AM_LDFLAGS = $(COVERAGE_LDFLAGS) - -EXTRA_DIST = bsc_nat_trie_test.ok prefixes.csv - -noinst_PROGRAMS = bsc_nat_trie_test - -bsc_nat_trie_test_SOURCES = bsc_nat_trie_test.c \ - $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c -bsc_nat_trie_test_LDADD = $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libmgcp/libmgcp.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS) -lrt \ - $(LIBOSMOSCCP_LIBS) $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) diff --git a/tests/bsc-nat-trie/bsc_nat_trie_test.c b/tests/bsc-nat-trie/bsc_nat_trie_test.c deleted file mode 100644 index 4b4df2faf..000000000 --- a/tests/bsc-nat-trie/bsc_nat_trie_test.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * (C) 2013 by On-Waves - * (C) 2013 by Holger Hans Peter Freyther - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include - -#include -#include -#include -#include - -#include - -int main(int argc, char **argv) -{ - struct nat_rewrite *trie; - - osmo_init_logging(&log_info); - - printf("Testing the trie\n"); - - trie = nat_rewrite_parse(NULL, "prefixes.csv"); - OSMO_ASSERT(trie); - - /* verify that it has been parsed */ - OSMO_ASSERT(trie->prefixes == 17); - printf("Dumping the internal trie\n"); - nat_rewrite_dump(trie); - - /* now do the matching... */ - OSMO_ASSERT(!nat_rewrite_lookup(trie, "")); - OSMO_ASSERT(!nat_rewrite_lookup(trie, "2")); - - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "1")->rewrite, "1") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "12")->rewrite, "2") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "123")->rewrite, "3") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "1234")->rewrite, "4") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "12345")->rewrite, "5") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "123456")->rewrite, "6") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "1234567")->rewrite, "7") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "12345678")->rewrite, "8") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "123456789")->rewrite, "9") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "1234567890")->rewrite, "10") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "13")->rewrite, "11") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "14")->rewrite, "12") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "15")->rewrite, "13") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "16")->rewrite, "14") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "823455")->rewrite, "15") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "82")->rewrite, "16") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "+49123445")->rewrite, "17") == 0); - - /* match a prefix */ - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "121")->rewrite, "2") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "1292323")->rewrite, "2") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "12345678901")->rewrite, "10") == 0); - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "160")->rewrite, "14") == 0); - - OSMO_ASSERT(strcmp(nat_rewrite_lookup(trie, "12345678901123452123123")->rewrite, "10") == 0); - - /* invalid input */ - OSMO_ASSERT(!nat_rewrite_lookup(trie, "12abc")); - - talloc_free(trie); - - trie = nat_rewrite_parse(NULL, "does_not_exist.csv"); - OSMO_ASSERT(!trie); - - printf("Done with the tests.\n"); - return 0; -} diff --git a/tests/bsc-nat-trie/bsc_nat_trie_test.ok b/tests/bsc-nat-trie/bsc_nat_trie_test.ok deleted file mode 100644 index 4d4cc9949..000000000 --- a/tests/bsc-nat-trie/bsc_nat_trie_test.ok +++ /dev/null @@ -1,20 +0,0 @@ -Testing the trie -Dumping the internal trie -1,1 -12,2 -123,3 -1234,4 -12345,5 -123456,6 -1234567,7 -12345678,8 -123456789,9 -1234567890,10 -13,11 -14,12 -15,13 -16,14 -82,16 -823455,15 -+49123,17 -Done with the tests. diff --git a/tests/bsc-nat-trie/prefixes.csv b/tests/bsc-nat-trie/prefixes.csv deleted file mode 100644 index 35485b1a3..000000000 --- a/tests/bsc-nat-trie/prefixes.csv +++ /dev/null @@ -1,25 +0,0 @@ -1,1 -12,2 -123,3 -1234,4 -12345,5 -123456,6 -1234567,7 -12345678,8 -123456789,9 -1234567890,10 -13,11 -14,12 -15,13 -16,14 -823455,15 -82,16 -+49123,17 -1ABC,18 -12345678901234567890,19 -,20 -14A,21 -124,324324324234 -1234567890,10 -no line -99, diff --git a/tests/bsc-nat/Makefile.am b/tests/bsc-nat/Makefile.am deleted file mode 100644 index 40be3a32f..000000000 --- a/tests/bsc-nat/Makefile.am +++ /dev/null @@ -1,59 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOCTRL_LIBS) \ - $(LIBOSMOSCCP_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(LIBOSMONETIF_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(NULL) - -AM_LDFLAGS = \ - $(COVERAGE_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - bsc_nat_test.ok \ - bsc_data.c \ - barr.cfg \ - barr_dup.cfg \ - prefixes.csv \ - $(NULL) - -noinst_PROGRAMS = \ - bsc_nat_test \ - $(NULL) - -bsc_nat_test_SOURCES = \ - bsc_nat_test.c \ - $(top_srcdir)/src/osmo-bsc_nat/bsc_filter.c \ - $(top_srcdir)/src/osmo-bsc_nat/bsc_sccp.c \ - $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_utils.c \ - $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite.c \ - $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c \ - $(top_srcdir)/src/osmo-bsc_nat/bsc_mgcp_utils.c \ - $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_filter.c - -bsc_nat_test_LDADD = \ - $(top_builddir)/src/libfilter/libfilter.a \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/src/libmgcp/libmgcp.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOSCCP_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMONETIF_LIBS) \ - $(LIBOSMOCTRL_LIBS) \ - -lrt \ - $(NULL) diff --git a/tests/bsc-nat/barr.cfg b/tests/bsc-nat/barr.cfg deleted file mode 100644 index a9a4a2b31..000000000 --- a/tests/bsc-nat/barr.cfg +++ /dev/null @@ -1,12 +0,0 @@ -12123124:3:2: -12123123:3:1: -12123128:3:6: -12123125:3:3: -12123127:3:5: -12123126:3:4: -12123120:3:4: -12123119:3:4: -12123118:3:4: -12123117:3:4: -12123116:3:4: -12123115:3:4: diff --git a/tests/bsc-nat/barr_dup.cfg b/tests/bsc-nat/barr_dup.cfg deleted file mode 100644 index ea94631ce..000000000 --- a/tests/bsc-nat/barr_dup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -12123124:3:2: -12123124:3:2: diff --git a/tests/bsc-nat/bsc_data.c b/tests/bsc-nat/bsc_data.c deleted file mode 100644 index 3a9f1da62..000000000 --- a/tests/bsc-nat/bsc_data.c +++ /dev/null @@ -1,275 +0,0 @@ -/* test data */ - -/* BSC -> MSC, CR */ -static const uint8_t bsc_cr[] = { -0x00, 0x2e, 0xfd, -0x01, 0x00, 0x00, 0x15, 0x02, 0x02, 0x04, 0x02, -0x42, 0xfe, 0x0f, 0x21, 0x00, 0x1f, 0x57, 0x05, -0x08, 0x00, 0x72, 0xf4, 0x80, 0x20, 0x1c, 0xc3, -0x51, 0x17, 0x12, 0x05, 0x08, 0x20, 0x72, 0xf4, -0x90, 0x20, 0x1d, 0x50, 0x08, 0x29, 0x47, 0x80, -0x00, 0x00, 0x00, 0x00, 0x80, 0x00 }; - -static const uint8_t bsc_cr_patched[] = { -0x00, 0x2e, 0xfd, -0x01, 0x00, 0x00, 0x05, 0x02, 0x02, 0x04, 0x02, -0x42, 0xfe, 0x0f, 0x21, 0x00, 0x1f, 0x57, 0x05, -0x08, 0x00, 0x72, 0xf4, 0x80, 0x20, 0x1c, 0xc3, -0x51, 0x17, 0x12, 0x05, 0x08, 0x20, 0x72, 0xf4, -0x90, 0x20, 0x1d, 0x50, 0x08, 0x29, 0x47, 0x80, -0x00, 0x00, 0x00, 0x00, 0x80, 0x00 }; - -/* CC, MSC -> BSC */ -static const uint8_t msc_cc[] = { -0x00, 0x0a, 0xfd, -0x02, 0x00, 0x00, 0x05, 0x01, 0x1f, 0xe4, 0x02, -0x01, 0x00 }; -static const uint8_t msc_cc_patched[] = { -0x00, 0x0a, 0xfd, -0x02, 0x00, 0x00, 0x15, 0x01, 0x1f, 0xe4, 0x02, -0x01, 0x00 }; - -/* Classmark, BSC -> MSC */ -static const uint8_t bsc_dtap[] = { -0x00, 0x17, 0xfd, -0x06, 0x01, 0x1f, 0xe4, 0x00, 0x01, 0x10, 0x00, -0x0e, 0x54, 0x12, 0x03, 0x50, 0x18, 0x93, 0x13, -0x06, 0x60, 0x14, 0x45, 0x00, 0x81, 0x00 }; - -static const uint8_t bsc_dtap_patched[] = { -0x00, 0x17, 0xfd, -0x06, 0x01, 0x1f, 0xe4, 0x00, 0x01, 0x10, 0x00, -0x0e, 0x54, 0x12, 0x03, 0x50, 0x18, 0x93, 0x13, -0x06, 0x60, 0x14, 0x45, 0x00, 0x81, 0x00 }; - -/* Clear command, MSC -> BSC */ -static const uint8_t msc_dtap[] = { -0x00, 0x0d, 0xfd, -0x06, 0x00, 0x00, 0x05, 0x00, 0x01, 0x06, 0x00, -0x04, 0x20, 0x04, 0x01, 0x09 }; -static const uint8_t msc_dtap_patched[] = { -0x00, 0x0d, 0xfd, -0x06, 0x00, 0x00, 0x15, 0x00, 0x01, 0x06, 0x00, -0x04, 0x20, 0x04, 0x01, 0x09 }; - -/*RLSD, MSC -> BSC */ -static const uint8_t msc_rlsd[] = { -0x00, 0x0a, 0xfd, -0x04, 0x00, 0x00, 0x05, 0x01, 0x1f, 0xe4, 0x00, -0x01, 0x00 }; -static const uint8_t msc_rlsd_patched[] = { -0x00, 0x0a, 0xfd, -0x04, 0x00, 0x00, 0x15, 0x01, 0x1f, 0xe4, 0x00, -0x01, 0x00 }; - -/* RLC, BSC -> MSC */ -static const uint8_t bsc_rlc[] = { -0x00, 0x07, 0xfd, -0x05, 0x01, 0x1f, 0xe4, 0x00, 0x00, 0x15 }; - -static const uint8_t bsc_rlc_patched[] = { -0x00, 0x07, 0xfd, -0x05, 0x01, 0x1f, 0xe4, 0x00, 0x00, 0x05 }; - - -/* a paging command */ -static const uint8_t paging_by_lac_cmd[] = { -0x00, 0x22, 0xfd, 0x09, -0x00, 0x03, 0x07, 0x0b, 0x04, 0x43, 0x02, 0x00, -0xfe, 0x04, 0x43, 0x5c, 0x00, 0xfe, 0x12, 0x00, -0x10, 0x52, 0x08, 0x08, 0x29, 0x47, 0x10, 0x02, -0x01, 0x50, 0x02, 0x30, 0x1a, 0x03, 0x05, 0x20, -0x15 }; - -/* an assignment command */ -static const uint8_t ass_cmd[] = { -0x00, 0x12, 0xfd, 0x06, -0x00, 0x00, 0x49, 0x00, 0x01, 0x0b, 0x00, 0x09, -0x01, 0x0b, 0x03, 0x01, 0x0a, 0x11, 0x01, 0x00, -0x01 }; - -/* identity response */ -static const uint8_t id_resp[] = { -0x00, 0x15, 0xfd, 0x06, 0x01, 0x1c, 0xdc, -0x00, 0x01, 0x0e, 0x01, 0x00, 0x0b, 0x05, 0x59, -0x08, 0x29, 0x40, 0x21, 0x03, 0x07, 0x48, 0x66, -0x31 -}; - -/* sms code msg */ -static const uint8_t smsc_rewrite[] = { -0x00, 0x30, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00, -0x01, 0x29, 0x01, 0x03, 0x26, 0x09, 0x01, 0x23, -0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08, -0x00, 0x10, 0x50, 0x17, 0x21, 0x0c, 0x0f, 0x81, -0x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5, -0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca, -0xbf, 0xeb, 0x20 -}; - -static const uint8_t smsc_rewrite_patched[] = { -0x00, 0x31, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00, -0x01, 0x2a, 0x01, 0x03, 0x27, 0x09, 0x01, 0x24, -0x00, 0x0c, 0x00, 0x08, 0x91, 0x66, 0x66, 0x66, -0x66, 0x66, 0x66, 0xf7, 0x17, 0x01, 0x0c, 0x0f, -0x81, 0x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46, -0xf5, 0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, -0xca, 0xbf, 0xeb, 0x20 -}; - -static const uint8_t smsc_rewrite_patched_hdr[] = { -0x00, 0x30, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00, -0x01, 0x29, 0x01, 0x03, 0x26, 0x09, 0x01, 0x23, -0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08, -0x00, 0x10, 0x50, 0x17, 0x01, 0x0c, 0x0f, 0x81, -0x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5, -0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca, -0xbf, 0xeb, 0x20 -}; - -static const uint8_t smsc_rewrite_num_patched[] = { -0x00, 0x2f, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00, -0x01, 0x28, 0x01, 0x03, 0x25, 0x09, 0x01, 0x22, -0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08, -0x00, 0x10, 0x50, 0x16, 0x21, 0x0c, 0x0d, 0x91, - 0x23, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5, -0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca, -0xbf, 0xeb, 0x20 -}; - -static const uint8_t smsc_rewrite_num_patched_tp_srr[] = { -0x00, 0x2f, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00, -0x01, 0x28, 0x01, 0x03, 0x25, 0x09, 0x01, 0x22, -0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08, -0x00, 0x10, 0x50, 0x16, 0x01, 0x0c, 0x0d, 0x91, - 0x23, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5, -0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca, -0xbf, 0xeb, 0x20 -}; - -/* - * MGCP messages - */ - -/* nothing to patch */ -static const char crcx[] = "CRCX 23265295 8@mgw MGCP 1.0\r\nC: 394b0439fb\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n"; -static const char crcx_patched[] = "CRCX 23265295 1e@mgw MGCP 1.0\r\nC: 394b0439fb\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n"; - - -/* patch the ip and port */ -static const char crcx_resp[] = "200 23265295\r\nI: 1\r\n\r\nv=0\r\nc=IN IP4 172.16.18.2\r\nm=audio 4002 RTP/AVP 98 3\r\na=rtpmap:98 AMR/8000\r\n"; -static const char crcx_resp_patched[] = "200 23265295\r\nI: 1\r\n\r\nv=0\r\nc=IN IP4 10.0.0.1\r\nm=audio 999 RTP/AVP 98 3\r\na=rtpmap:98 AMR/8000\r\na=fmtp:98 mode-set=2\r\n"; - -/* patch the ip and port */ -static const char mdcx[] = "MDCX 23330829 8@mgw MGCP 1.0\r\nC: 394b0439fb\r\nI: 1\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n\r\nv=0\r\no=- 1049380491 0 IN IP4 172.16.18.2\r\ns=-\r\nc=IN IP4 172.16.18.2\r\nt=0 0\r\nm=audio 4410 RTP/AVP 126\r\na=rtpmap:126 AMR/8000/1\r\na=fmtp:126 mode-set=2;start-mode=0\r\na=ptime:20\r\na=recvonly\r\nm=image 4412 udptl t38\r\na=T38FaxVersion:0\r\na=T38MaxBitRate:14400\r\n"; -static const char mdcx_patched[] = "MDCX 23330829 1e@mgw MGCP 1.0\r\nC: 394b0439fb\r\nI: 1\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n\r\nv=0\r\no=- 1049380491 0 IN IP4 172.16.18.2\r\ns=-\r\nc=IN IP4 10.0.0.23\r\nt=0 0\r\nm=audio 6666 RTP/AVP 126\r\na=rtpmap:126 AMR/8000/1\r\na=fmtp:126 mode-set=2;start-mode=0\r\na=ptime:20\r\na=recvonly\r\nm=image 4412 udptl t38\r\na=T38FaxVersion:0\r\na=T38MaxBitRate:14400\r\n"; - - -static const char mdcx_resp[] = "200 23330829\r\n\r\nv=0\r\nc=IN IP4 172.16.18.2\r\nm=audio 4002 RTP/AVP 98\r\na=rtpmap:98 AMR/8000\r\n"; -static const char mdcx_resp_patched[] = "200 23330829\r\n\r\nv=0\r\nc=IN IP4 10.0.0.23\r\nm=audio 5555 RTP/AVP 98\r\na=rtpmap:98 AMR/8000\r\na=fmtp:98 mode-set=2\r\n"; - -/* different line ending */ -static const char mdcx_resp2[] = "200 33330829\n\nv=0\nc=IN IP4 172.16.18.2\nm=audio 4002 RTP/AVP 98\na=rtpmap:98 AMR/8000\n"; -static const char mdcx_resp_patched2[] = "200 33330829\n\nv=0\nc=IN IP4 10.0.0.23\nm=audio 5555 RTP/AVP 98\na=rtpmap:98 AMR/8000\na=fmtp:98 mode-set=2\n"; -static const char mdcx_resp_patched2_noamr[] = "200 33330829\n\nv=0\nc=IN IP4 10.0.0.23\nm=audio 5555 RTP/AVP 98\na=rtpmap:98 AMR/8000\n"; - -struct mgcp_patch_test { - const char *orig; - const char *patch; - const char *ip; - const int port; - const int payload_type; - const int ensure_mode_set; -}; - -static const struct mgcp_patch_test mgcp_messages[] = { - { - .orig = crcx, - .patch = crcx_patched, - .ip = "0.0.0.0", - .port = 2323, - .ensure_mode_set = 1, - }, - { - .orig = crcx_resp, - .patch = crcx_resp_patched, - .ip = "10.0.0.1", - .port = 999, - .payload_type = 98, - .ensure_mode_set = 1, - }, - { - .orig = mdcx, - .patch = mdcx_patched, - .ip = "10.0.0.23", - .port = 6666, - .payload_type = 126, - .ensure_mode_set = 1, - }, - { - .orig = mdcx_resp, - .patch = mdcx_resp_patched, - .ip = "10.0.0.23", - .port = 5555, - .payload_type = 98, - .ensure_mode_set = 1, - }, - { - .orig = mdcx_resp2, - .patch = mdcx_resp_patched2, - .ip = "10.0.0.23", - .port = 5555, - .payload_type = 98, - .ensure_mode_set = 1, - }, - { - .orig = mdcx_resp2, - .patch = mdcx_resp_patched2_noamr, - .ip = "10.0.0.23", - .port = 5555, - .payload_type = 98, - .ensure_mode_set = 0, - }, -}; - -/* CC Setup messages */ -static const uint8_t cc_setup_national[] = { - 0x00, 0x20, 0xfd, 0x06, 0x01, 0x12, - 0x6d, 0x00, 0x01, 0x19, 0x01, 0x00, 0x16, 0x03, - 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, - 0x81, 0x5e, 0x06, 0x81, 0x10, 0x27, 0x33, 0x63, - 0x66, 0x15, 0x02, 0x11, 0x01 -}; - -static const uint8_t cc_setup_national_patched[] = { - 0x00, 0x21, 0xfd, 0x06, 0x01, 0x12, - 0x6d, 0x00, 0x01, 0x1a, 0x01, 0x00, 0x17, 0x03, - 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, - 0x81, 0x5e, 0x07, 0x91, 0x94, 0x71, 0x32, 0x33, - 0x66, 0xf6, 0x15, 0x02, 0x11, 0x01 -}; - -/* patch the phone number of cc_setup_national_patched */ -static const uint8_t cc_setup_national_patched_patched[] = { - 0x00, 0x21, 0xfd, 0x06, 0x01, 0x12, - 0x6d, 0x00, 0x01, 0x1a, 0x01, 0x00, 0x17, 0x03, - 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, - 0x81, 0x5e, 0x07, 0x91, 0x63, 0x71, 0x32, 0x33, - 0x66, 0xf6, 0x15, 0x02, 0x11, 0x01 -}; - -static const uint8_t cc_setup_international[] = { - 0x00, 0x22, 0xfd, 0x06, 0x01, 0x13, - 0xe7, 0x00, 0x01, 0x1b, 0x01, 0x00, 0x18, 0x03, - 0x45, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, - 0x81, 0x5e, 0x08, 0x81, 0x00, 0x94, 0x71, 0x33, - 0x63, 0x66, 0x03, 0x15, 0x02, 0x11, 0x01 -}; - -static const uint8_t cc_setup_national_again[] = { - 0x00, 0x22, 0xfd, 0x06, 0x01, 0x12, 0x6d, 0x00, - 0x01, 0x1b, 0x01, 0x00, 0x18, 0x03, 0x05, 0x04, - 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, 0x81, 0x5e, - 0x08, 0x81, 0x63, 0x94, 0x71, 0x32, 0x33, 0x66, - 0xf6, 0x15, 0x02, 0x11, 0x01 -}; diff --git a/tests/bsc-nat/bsc_nat_test.c b/tests/bsc-nat/bsc_nat_test.c deleted file mode 100644 index 2914a01b5..000000000 --- a/tests/bsc-nat/bsc_nat_test.c +++ /dev/null @@ -1,1584 +0,0 @@ -/* - * BSC NAT Message filtering - * - * (C) 2010-2013 by Holger Hans Peter Freyther - * (C) 2010-2013 by On-Waves - * - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -/* test messages for ipa */ -static uint8_t ipa_id[] = { - 0x00, 0x01, 0xfe, 0x06, -}; - -/* SCCP messages are below */ -static uint8_t gsm_reset[] = { - 0x00, 0x12, 0xfd, - 0x09, 0x00, 0x03, 0x05, 0x07, 0x02, 0x42, 0xfe, - 0x02, 0x42, 0xfe, 0x06, 0x00, 0x04, 0x30, 0x04, - 0x01, 0x20, -}; - -static const uint8_t gsm_reset_ack[] = { - 0x00, 0x13, 0xfd, - 0x09, 0x00, 0x03, 0x07, 0x0b, 0x04, 0x43, 0x01, - 0x00, 0xfe, 0x04, 0x43, 0x5c, 0x00, 0xfe, 0x03, - 0x00, 0x01, 0x31, -}; - -static const uint8_t gsm_paging[] = { - 0x00, 0x20, 0xfd, - 0x09, 0x00, 0x03, 0x07, 0x0b, 0x04, 0x43, 0x01, - 0x00, 0xfe, 0x04, 0x43, 0x5c, 0x00, 0xfe, 0x10, - 0x00, 0x0e, 0x52, 0x08, 0x08, 0x29, 0x47, 0x10, - 0x02, 0x01, 0x31, 0x97, 0x61, 0x1a, 0x01, 0x06, -}; - -/* BSC -> MSC connection open */ -static const uint8_t bssmap_cr[] = { - 0x00, 0x2c, 0xfd, - 0x01, 0x01, 0x02, 0x03, 0x02, 0x02, 0x04, 0x02, - 0x42, 0xfe, 0x0f, 0x1f, 0x00, 0x1d, 0x57, 0x05, - 0x08, 0x00, 0x72, 0xf4, 0x80, 0x20, 0x12, 0xc3, - 0x50, 0x17, 0x10, 0x05, 0x24, 0x11, 0x03, 0x33, - 0x19, 0xa2, 0x08, 0x29, 0x47, 0x10, 0x02, 0x01, - 0x31, 0x97, 0x61, 0x00 -}; - -/* MSC -> BSC connection confirm */ -static const uint8_t bssmap_cc[] = { - 0x00, 0x0a, 0xfd, - 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, -}; - -/* MSC -> BSC released */ -static const uint8_t bssmap_released[] = { - 0x00, 0x0e, 0xfd, - 0x04, 0x00, 0x00, 0x03, 0x01, 0x02, 0x03, 0x00, 0x01, 0x0f, - 0x02, 0x23, 0x42, 0x00, -}; - -/* BSC -> MSC released */ -static const uint8_t bssmap_release_complete[] = { - 0x00, 0x07, 0xfd, - 0x05, 0x01, 0x02, 0x03, 0x00, 0x00, 0x03 -}; - -/* both directions IT timer */ -static const uint8_t connnection_it[] = { - 0x00, 0x0b, 0xfd, - 0x10, 0x01, 0x02, 0x03, 0x01, 0x02, 0x03, - 0x00, 0x00, 0x00, 0x00, -}; - -/* error in both directions */ -static const uint8_t proto_error[] = { - 0x00, 0x05, 0xfd, - 0x0f, 0x22, 0x33, 0x44, 0x00, -}; - -/* MGCP wrap... */ -static const uint8_t mgcp_msg[] = { - 0x00, 0x03, 0xfc, - 0x20, 0x20, 0x20, -}; - -/* location updating request */ -static const uint8_t bss_lu[] = { - 0x00, 0x2e, 0xfd, - 0x01, 0x91, 0x45, 0x14, 0x02, 0x02, 0x04, 0x02, - 0x42, 0xfe, 0x0f, 0x21, 0x00, 0x1f, 0x57, 0x05, - 0x08, 0x00, 0x72, 0xf4, 0x80, 0x20, 0x14, 0xc3, - 0x50, 0x17, 0x12, 0x05, 0x08, 0x70, 0x72, 0xf4, - 0x80, 0xff, 0xfe, 0x30, 0x08, 0x29, 0x44, 0x50, - 0x12, 0x03, 0x24, 0x01, 0x95, 0x00 -}; - -/* paging response */ -static const uint8_t pag_resp[] = { - 0x00, 0x2c, 0xfd, 0x01, 0xe5, 0x68, - 0x14, 0x02, 0x02, 0x04, 0x02, 0x42, 0xfe, 0x0f, - 0x1f, 0x00, 0x1d, 0x57, 0x05, 0x08, 0x00, 0x72, - 0xf4, 0x80, 0x20, 0x16, 0xc3, 0x50, 0x17, 0x10, - 0x06, 0x27, 0x01, 0x03, 0x30, 0x18, 0x96, 0x08, - 0x29, 0x26, 0x30, 0x32, 0x11, 0x42, 0x01, 0x19, - 0x00 -}; - -struct filter_result { - const uint8_t *data; - const uint16_t length; - const int dir; - const int result; -}; - -static const struct filter_result results[] = { - { - .data = ipa_id, - .length = ARRAY_SIZE(ipa_id), - .dir = DIR_MSC, - .result = 1, - }, - { - .data = gsm_reset, - .length = ARRAY_SIZE(gsm_reset), - .dir = DIR_MSC, - .result = 1, - }, - { - .data = gsm_reset_ack, - .length = ARRAY_SIZE(gsm_reset_ack), - .dir = DIR_BSC, - .result = 1, - }, - { - .data = gsm_paging, - .length = ARRAY_SIZE(gsm_paging), - .dir = DIR_BSC, - .result = 0, - }, - { - .data = bssmap_cr, - .length = ARRAY_SIZE(bssmap_cr), - .dir = DIR_MSC, - .result = 0, - }, - { - .data = bssmap_cc, - .length = ARRAY_SIZE(bssmap_cc), - .dir = DIR_BSC, - .result = 0, - }, - { - .data = bssmap_released, - .length = ARRAY_SIZE(bssmap_released), - .dir = DIR_MSC, - .result = 0, - }, - { - .data = bssmap_release_complete, - .length = ARRAY_SIZE(bssmap_release_complete), - .dir = DIR_BSC, - .result = 0, - }, - { - .data = mgcp_msg, - .length = ARRAY_SIZE(mgcp_msg), - .dir = DIR_MSC, - .result = 0, - }, - { - .data = connnection_it, - .length = ARRAY_SIZE(connnection_it), - .dir = DIR_BSC, - .result = 0, - }, - { - .data = connnection_it, - .length = ARRAY_SIZE(connnection_it), - .dir = DIR_MSC, - .result = 0, - }, - { - .data = proto_error, - .length = ARRAY_SIZE(proto_error), - .dir = DIR_BSC, - .result = 0, - }, - { - .data = proto_error, - .length = ARRAY_SIZE(proto_error), - .dir = DIR_MSC, - .result = 0, - }, - -}; - -static void test_filter(void) -{ - int i; - - - /* start testinh with proper messages */ - printf("Testing BSS Filtering.\n"); - for (i = 0; i < ARRAY_SIZE(results); ++i) { - int result; - struct bsc_nat_parsed *parsed; - struct msgb *msg = msgb_alloc(4096, "test-message"); - - printf("Going to test item: %d\n", i); - memcpy(msg->data, results[i].data, results[i].length); - msg->l2h = msgb_put(msg, results[i].length); - - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Failed to parse the message\n"); - continue; - } - - result = bsc_nat_filter_ipa(results[i].dir, msg, parsed); - if (result != results[i].result) { - printf("FAIL: Not the expected result got: %d wanted: %d\n", - result, results[i].result); - } - - msgb_free(msg); - } -} - -#include "bsc_data.c" - -static void copy_to_msg(struct msgb *msg, const uint8_t *data, unsigned int length) -{ - msgb_reset(msg); - msg->l2h = msgb_put(msg, length); - memcpy(msg->l2h, data, msgb_l2len(msg)); -} - -static void verify_msg(struct msgb *out, const uint8_t *ref, int ref_len) -{ - if (out->len != ref_len) { - printf("FAIL: The size should match: %d vs. %d\n", - out->len, ref_len); - printf("%s\n", osmo_hexdump(out->data, out->len)); - printf("Wanted\n"); - printf("%s\n", osmo_hexdump(ref, ref_len)); - abort(); - } - - if (memcmp(out->data, ref, out->len) != 0) { - printf("FAIL: the data should be changed.\n"); - printf("%s\n", osmo_hexdump(out->data, out->len)); - printf("Wanted\n"); - printf("%s\n", osmo_hexdump(ref, ref_len)); - abort(); - } -} - - -#define VERIFY(con_found, con, msg, ver, str) \ - if (!con_found) { \ - printf("Failed to find connection.\n"); \ - abort(); \ - } \ - if (con_found->bsc != con) { \ - printf("Got connection of the wrong BSC: %d\n", \ - con_found->bsc->cfg->nr); \ - abort(); \ - } \ - if (memcmp(msg->data, ver, sizeof(ver)) != 0) { \ - printf("Failed to patch the %s msg.\n", str); \ - abort(); \ - } - -/* test conn tracking once */ -static void test_contrack() -{ - struct bsc_nat *nat; - struct bsc_connection *con; - struct nat_sccp_connection *con_found; - struct nat_sccp_connection *rc_con; - struct bsc_nat_parsed *parsed; - struct msgb *msg; - - printf("Testing connection tracking.\n"); - nat = bsc_nat_alloc(); - con = bsc_connection_alloc(nat); - con->cfg = bsc_config_alloc(nat, "foo", 0); - bsc_config_add_lac(con->cfg, 23); - bsc_config_add_lac(con->cfg, 49); - bsc_config_add_lac(con->cfg, 42); - bsc_config_del_lac(con->cfg, 49); - bsc_config_add_lac(con->cfg, 1111); - msg = msgb_alloc(4096, "test"); - - /* 1.) create a connection */ - copy_to_msg(msg, bsc_cr, sizeof(bsc_cr)); - parsed = bsc_nat_parse(msg); - con_found = patch_sccp_src_ref_to_msc(msg, parsed, con); - if (con_found != NULL) { - printf("Con should not exist realref(%u)\n", - sccp_src_ref_to_int(&con_found->real_ref)); - abort(); - } - rc_con = create_sccp_src_ref(con, parsed); - if (!rc_con) { - printf("Failed to create a ref\n"); - abort(); - } - con_found = patch_sccp_src_ref_to_msc(msg, parsed, con); - if (!con_found) { - printf("Failed to find connection.\n"); - abort(); - } - if (con_found->bsc != con) { - printf("Got connection of the wrong BSC: %d\n", - con_found->bsc->cfg->nr); - abort(); - } - if (con_found != rc_con) { - printf("Failed to find the right connection.\n"); - abort(); - } - if (memcmp(msg->data, bsc_cr_patched, sizeof(bsc_cr_patched)) != 0) { - printf("Failed to patch the BSC CR msg.\n"); - abort(); - } - talloc_free(parsed); - - /* 2.) get the cc */ - copy_to_msg(msg, msc_cc, sizeof(msc_cc)); - parsed = bsc_nat_parse(msg); - con_found = patch_sccp_src_ref_to_bsc(msg, parsed, nat); - VERIFY(con_found, con, msg, msc_cc_patched, "MSC CC"); - if (update_sccp_src_ref(con_found, parsed) != 0) { - printf("Failed to update the SCCP con.\n"); - abort(); - } - - /* 3.) send some data */ - copy_to_msg(msg, bsc_dtap, sizeof(bsc_dtap)); - parsed = bsc_nat_parse(msg); - con_found = patch_sccp_src_ref_to_msc(msg, parsed, con); - VERIFY(con_found, con, msg, bsc_dtap_patched, "BSC DTAP"); - - /* 4.) receive some data */ - copy_to_msg(msg, msc_dtap, sizeof(msc_dtap)); - parsed = bsc_nat_parse(msg); - con_found = patch_sccp_src_ref_to_bsc(msg, parsed, nat); - VERIFY(con_found, con, msg, msc_dtap_patched, "MSC DTAP"); - - /* 5.) close the connection */ - copy_to_msg(msg, msc_rlsd, sizeof(msc_rlsd)); - parsed = bsc_nat_parse(msg); - con_found = patch_sccp_src_ref_to_bsc(msg, parsed, nat); - VERIFY(con_found, con, msg, msc_rlsd_patched, "MSC RLSD"); - - /* 6.) confirm the connection close */ - copy_to_msg(msg, bsc_rlc, sizeof(bsc_rlc)); - parsed = bsc_nat_parse(msg); - con_found = patch_sccp_src_ref_to_msc(msg, parsed, con); - if (!con_found) { - printf("Failed to find connection.\n"); - abort(); - } - if (con_found->bsc != con) { - printf("Got connection of the wrong BSC: %d\n", - con_found->bsc->cfg->nr); - abort(); - } - if (memcmp(msg->data, bsc_rlc_patched, sizeof(bsc_rlc_patched)) != 0) { - printf("Failed to patch the BSC CR msg.\n"); - abort(); - } - remove_sccp_src_ref(con, msg, parsed); - talloc_free(parsed); - - copy_to_msg(msg, bsc_rlc, sizeof(bsc_rlc)); - parsed = bsc_nat_parse(msg); - con_found = patch_sccp_src_ref_to_msc(msg, parsed, con); - - /* verify that it is gone */ - if (con_found != NULL) { - printf("Con should not exist real_ref(%u)\n", - sccp_src_ref_to_int(&con_found->real_ref)); - abort(); - } - talloc_free(parsed); - - - bsc_config_free(con->cfg); - bsc_nat_free(nat); - msgb_free(msg); -} - -static void test_paging(void) -{ - struct bsc_nat *nat; - struct bsc_connection *con; - struct bsc_config *cfg; - - printf("Testing paging by lac.\n"); - - nat = bsc_nat_alloc(); - con = bsc_connection_alloc(nat); - cfg = bsc_config_alloc(nat, "unknown", 0); - con->cfg = cfg; - bsc_config_add_lac(cfg, 23); - con->authenticated = 1; - llist_add(&con->list_entry, &nat->bsc_connections); - - /* Test it by not finding it */ - if (bsc_config_handles_lac(cfg, 8213) != 0) { - printf("Should not be handled.\n"); - abort(); - } - - /* Test by finding it */ - bsc_config_del_lac(cfg, 23); - bsc_config_add_lac(cfg, 8213); - if (bsc_config_handles_lac(cfg, 8213) == 0) { - printf("Should have found it.\n"); - abort(); - } - - bsc_nat_free(nat); -} - -static void test_mgcp_allocations(void) -{ -#if 0 - struct bsc_connection *bsc; - struct bsc_nat *nat; - struct nat_sccp_connection con; - int i, j, multiplex; - - printf("Testing MGCP.\n"); - memset(&con, 0, sizeof(con)); - - nat = bsc_nat_alloc(); - nat->bsc_endpoints = talloc_zero_array(nat, - struct bsc_endpoint, - 65); - nat->mgcp_cfg = mgcp_config_alloc(); - nat->mgcp_cfg->trunk.number_endpoints = 64; - - bsc = bsc_connection_alloc(nat); - bsc->cfg = bsc_config_alloc(nat, "foo", 0); - bsc->cfg->max_endpoints = 60; - bsc_config_add_lac(bsc->cfg, 2323); - bsc->last_endpoint = 0x22; - con.bsc = bsc; - - bsc_init_endps_if_needed(bsc); - - i = 1; - do { - if (bsc_assign_endpoint(bsc, &con) != 0) { - printf("failed to allocate... on iteration %d\n", i); - break; - } - ++i; - } while(1); - - multiplex = bsc_mgcp_nr_multiplexes(bsc->cfg->max_endpoints); - for (i = 0; i < multiplex; ++i) { - for (j = 0; j < 32; ++j) - printf("%d", bsc->_endpoint_status[i*32 + j]); - printf(": %d of %d\n", i*32 + 32, 32 * 8); - } -#endif -} - -static void test_mgcp_ass_tracking(void) -{ - struct bsc_connection *bsc; - struct bsc_nat *nat; - struct nat_sccp_connection con; - struct bsc_nat_parsed *parsed; - struct msgb *msg; - - printf("Testing MGCP.\n"); - memset(&con, 0, sizeof(con)); - - nat = bsc_nat_alloc(); - nat->bsc_endpoints = talloc_zero_array(nat, - struct bsc_endpoint, - 33); - nat->mgcp_cfg = mgcp_config_alloc(); - nat->mgcp_cfg->trunk.number_endpoints = 64; - mgcp_endpoints_allocate(&nat->mgcp_cfg->trunk); - - bsc = bsc_connection_alloc(nat); - bsc->cfg = bsc_config_alloc(nat, "foo", 0); - bsc_config_add_lac(bsc->cfg, 2323); - bsc->last_endpoint = 0x1e; - con.bsc = bsc; - - msg = msgb_alloc(4096, "foo"); - copy_to_msg(msg, ass_cmd, sizeof(ass_cmd)); - parsed = bsc_nat_parse(msg); - - if (msg->l2h[16] != 0 || - msg->l2h[17] != 0x1) { - printf("Input is not as expected.. %s 0x%x\n", - osmo_hexdump(msg->l2h, msgb_l2len(msg)), - msg->l2h[17]); - abort(); - } - - if (bsc_mgcp_assign_patch(&con, msg) != 0) { - printf("Failed to handle assignment.\n"); - abort(); - } - - if (con.msc_endp != 1) { - printf("Timeslot should be 1.\n"); - abort(); - } - - if (con.bsc_endp != 0x1) { - printf("Assigned timeslot should have been 1.\n"); - abort(); - } - if (con.bsc->_endpoint_status[0x1] != 1) { - printf("The status on the BSC is wrong.\n"); - abort(); - } - - int multiplex, timeslot; - mgcp_endpoint_to_timeslot(0x1, &multiplex, ×lot); - - uint16_t cic = htons(timeslot & 0x1f); - if (memcmp(&cic, &msg->l2h[16], sizeof(cic)) != 0) { - printf("Message was not patched properly\n"); - printf("data cic: 0x%x %s\n", cic, osmo_hexdump(msg->l2h, msgb_l2len(msg))); - abort(); - } - - talloc_free(parsed); - - bsc_mgcp_dlcx(&con); - if (con.bsc_endp != -1 || con.msc_endp != -1 || - con.bsc->_endpoint_status[1] != 0 || con.bsc->last_endpoint != 0x1) { - printf("Clearing should remove the mapping.\n"); - abort(); - } - - bsc_config_free(bsc->cfg); - bsc_nat_free(nat); -} - -/* test the code to find a given connection */ -static void test_mgcp_find(void) -{ - struct bsc_nat *nat; - struct bsc_connection *con; - struct nat_sccp_connection *sccp_con; - - printf("Testing finding of a BSC Connection\n"); - - nat = bsc_nat_alloc(); - con = bsc_connection_alloc(nat); - llist_add(&con->list_entry, &nat->bsc_connections); - - sccp_con = talloc_zero(con, struct nat_sccp_connection); - sccp_con->msc_endp = 12; - sccp_con->bsc_endp = 12; - sccp_con->bsc = con; - llist_add(&sccp_con->list_entry, &nat->sccp_connections); - - if (bsc_mgcp_find_con(nat, 11) != NULL) { - printf("Found the wrong connection.\n"); - abort(); - } - - if (bsc_mgcp_find_con(nat, 12) != sccp_con) { - printf("Didn't find the connection\n"); - abort(); - } - - /* free everything */ - bsc_nat_free(nat); -} - -static void test_mgcp_rewrite(void) -{ - int i; - struct msgb *output; - printf("Testing rewriting MGCP messages.\n"); - - for (i = 0; i < ARRAY_SIZE(mgcp_messages); ++i) { - const char *orig = mgcp_messages[i].orig; - const char *patc = mgcp_messages[i].patch; - const char *ip = mgcp_messages[i].ip; - const int port = mgcp_messages[i].port; - const int expected_payload_type = mgcp_messages[i].payload_type; - const int ensure_mode_set = mgcp_messages[i].ensure_mode_set; - int payload_type = -1; - - char *input = strdup(orig); - - output = bsc_mgcp_rewrite(input, strlen(input), 0x1e, - ip, port, -1, &payload_type, ensure_mode_set); - - if (payload_type != -1) { - fprintf(stderr, "Found media payload type %d in SDP data\n", - payload_type); - if (payload_type != expected_payload_type) { - printf("Wrong payload type %d (expected %d)\n", - payload_type, expected_payload_type); - abort(); - } - } - - if (msgb_l2len(output) != strlen(patc)) { - printf("Wrong sizes for test: %d %u != %zu != %zu\n", i, msgb_l2len(output), strlen(patc), strlen(orig)); - printf("String '%s' vs '%s'\n", (const char *) output->l2h, patc); - abort(); - } - - if (memcmp(output->l2h, patc, msgb_l2len(output)) != 0) { - printf("Broken on %d msg: '%s'\n", i, (const char *) output->l2h); - abort(); - } - - msgb_free(output); - free(input); - } -} - -static void test_mgcp_parse(void) -{ - int code, ci; - char transaction[60]; - - printf("Testing MGCP response parsing.\n"); - - if (bsc_mgcp_parse_response(crcx_resp, &code, transaction) != 0) { - printf("Failed to parse CRCX resp.\n"); - abort(); - } - - if (code != 200) { - printf("Failed to parse the CODE properly. Got: %d\n", code); - abort(); - } - - if (strcmp(transaction, "23265295") != 0) { - printf("Failed to parse transaction id: '%s'\n", transaction); - abort(); - } - - ci = bsc_mgcp_extract_ci(crcx_resp); - if (ci != 1) { - printf("Failed to parse the CI. Got: %d\n", ci); - abort(); - } -} - -struct cr_filter { - const uint8_t *data; - int length; - int result; - int contype; - - const char *bsc_imsi_allow; - const char *bsc_imsi_deny; - const char *nat_imsi_deny; - int nat_cm_reject_cause; - int nat_lu_reject_cause; - int bsc_cm_reject_cause; - int bsc_lu_reject_cause; - int want_cm_reject_cause; - int want_lu_reject_cause; -}; - -static struct cr_filter cr_filter[] = { - { - .data = bssmap_cr, - .length = sizeof(bssmap_cr), - .result = 1, - .contype = FLT_CON_TYPE_CM_SERV_REQ, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - .data = bss_lu, - .length = sizeof(bss_lu), - .result = 1, - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - .data = pag_resp, - .length = sizeof(pag_resp), - .result = 1, - .contype = FLT_CON_TYPE_PAG_RESP, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - /* nat deny is before blank/null BSC */ - .data = bss_lu, - .length = sizeof(bss_lu), - .result = -3, - .nat_imsi_deny = "[0-9]*", - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - /* BSC allow is before NAT deny */ - .data = bss_lu, - .length = sizeof(bss_lu), - .result = 1, - .nat_imsi_deny = "[0-9]*", - .bsc_imsi_allow = "2440[0-9]*", - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - /* BSC allow is before NAT deny */ - .data = bss_lu, - .length = sizeof(bss_lu), - .result = 1, - .bsc_imsi_allow = "[0-9]*", - .nat_imsi_deny = "[0-9]*", - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - /* filter as deny is first */ - .data = bss_lu, - .length = sizeof(bss_lu), - .result = 1, - .bsc_imsi_deny = "[0-9]*", - .bsc_imsi_allow = "[0-9]*", - .nat_imsi_deny = "[0-9]*", - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - /* deny by nat rule */ - .data = bss_lu, - .length = sizeof(bss_lu), - .result = -3, - .bsc_imsi_deny = "000[0-9]*", - .nat_imsi_deny = "[0-9]*", - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - /* deny by nat rule */ - .data = bss_lu, - .length = sizeof(bss_lu), - .result = -3, - .bsc_imsi_deny = "000[0-9]*", - .nat_imsi_deny = "[0-9]*", - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = 0x23, - .nat_lu_reject_cause = 0x42, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = 0x42, - .want_cm_reject_cause = 0x23, - }, - { - /* deny by bsc rule */ - .data = bss_lu, - .length = sizeof(bss_lu), - .result = -2, - .bsc_imsi_deny = "[0-9]*", - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - }, - { - /* deny by bsc rule */ - .data = bss_lu, - .length = sizeof(bss_lu), - .result = -2, - .bsc_imsi_deny = "[0-9]*", - .contype = FLT_CON_TYPE_LU, - .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED, - .bsc_cm_reject_cause = 0x42, - .bsc_lu_reject_cause = 0x23, - .want_lu_reject_cause = 0x23, - .want_cm_reject_cause = 0x42, - }, -}; - -static void test_cr_filter() -{ - int i, res, contype; - struct msgb *msg = msgb_alloc(4096, "test_cr_filter"); - struct bsc_nat_parsed *parsed; - struct bsc_msg_acc_lst *nat_lst, *bsc_lst; - struct bsc_msg_acc_lst_entry *nat_entry, *bsc_entry; - struct bsc_filter_reject_cause cause; - - struct bsc_nat *nat = bsc_nat_alloc(); - struct bsc_connection *bsc = bsc_connection_alloc(nat); - bsc->cfg = bsc_config_alloc(nat, "foo", 0); - bsc_config_add_lac(bsc->cfg, 1234); - bsc->cfg->acc_lst_name = "bsc"; - nat->acc_lst_name = "nat"; - - nat_lst = bsc_msg_acc_lst_get(nat, &nat->access_lists, "nat"); - bsc_lst = bsc_msg_acc_lst_get(nat, &nat->access_lists, "bsc"); - - bsc_entry = bsc_msg_acc_lst_entry_create(bsc_lst); - nat_entry = bsc_msg_acc_lst_entry_create(nat_lst); - - /* test the default value as we are going to overwrite it */ - OSMO_ASSERT(bsc_entry->cm_reject_cause == GSM48_REJECT_PLMN_NOT_ALLOWED); - OSMO_ASSERT(bsc_entry->lu_reject_cause == GSM48_REJECT_PLMN_NOT_ALLOWED); - - for (i = 0; i < ARRAY_SIZE(cr_filter); ++i) { - char *imsi; - msgb_reset(msg); - copy_to_msg(msg, cr_filter[i].data, cr_filter[i].length); - - bsc_entry->cm_reject_cause = cr_filter[i].bsc_cm_reject_cause; - bsc_entry->lu_reject_cause = cr_filter[i].bsc_lu_reject_cause; - nat_entry->cm_reject_cause = cr_filter[i].nat_cm_reject_cause; - nat_entry->lu_reject_cause = cr_filter[i].nat_lu_reject_cause; - - if (gsm_parse_reg(nat_entry, &nat_entry->imsi_deny_re, &nat_entry->imsi_deny, - cr_filter[i].nat_imsi_deny ? 1 : 0, - &cr_filter[i].nat_imsi_deny) != 0) - abort(); - if (gsm_parse_reg(bsc_entry, &bsc_entry->imsi_allow_re, &bsc_entry->imsi_allow, - cr_filter[i].bsc_imsi_allow ? 1 : 0, - &cr_filter[i].bsc_imsi_allow) != 0) - abort(); - if (gsm_parse_reg(bsc_entry, &bsc_entry->imsi_deny_re, &bsc_entry->imsi_deny, - cr_filter[i].bsc_imsi_deny ? 1 : 0, - &cr_filter[i].bsc_imsi_deny) != 0) - abort(); - - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Failed to parse the message\n"); - abort(); - } - - memset(&cause, 0, sizeof(cause)); - res = bsc_nat_filter_sccp_cr(bsc, msg, parsed, &contype, &imsi, &cause); - if (res != cr_filter[i].result) { - printf("FAIL: Wrong result %d for test %d.\n", res, i); - abort(); - } - - - OSMO_ASSERT(cause.cm_reject_cause == cr_filter[i].want_cm_reject_cause); - OSMO_ASSERT(cause.lu_reject_cause == cr_filter[i].want_lu_reject_cause); - - if (contype != cr_filter[i].contype) { - printf("FAIL: Wrong contype %d for test %d.\n", res, contype); - abort(); - } - - talloc_steal(parsed, imsi); - talloc_free(parsed); - } - - msgb_free(msg); - bsc_nat_free(nat); -} - -static void test_dt_filter() -{ - int i; - struct msgb *msg = msgb_alloc(4096, "test_dt_filter"); - struct bsc_nat_parsed *parsed; - struct bsc_filter_reject_cause cause; - - struct bsc_nat *nat = bsc_nat_alloc(); - struct bsc_connection *bsc = bsc_connection_alloc(nat); - struct nat_sccp_connection *con = talloc_zero(0, struct nat_sccp_connection); - - bsc->cfg = bsc_config_alloc(nat, "foo", 0); - bsc_config_add_lac(bsc->cfg, 23); - con->bsc = bsc; - - msgb_reset(msg); - copy_to_msg(msg, id_resp, ARRAY_SIZE(id_resp)); - - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp\n"); - abort(); - } - - if (parsed->bssap != BSSAP_MSG_DTAP) { - printf("FAIL: It should be dtap\n"); - abort(); - } - - /* gsm_type is actually the size of the dtap */ - if (parsed->gsm_type < msgb_l3len(msg) - 3) { - printf("FAIL: Not enough space for the content\n"); - abort(); - } - - memset(&cause, 0, sizeof(cause)); - OSMO_ASSERT(!con->filter_state.imsi); - if (bsc_nat_filter_dt(bsc, msg, con, parsed, &cause) != 1) { - printf("FAIL: Should have passed..\n"); - abort(); - } - OSMO_ASSERT(con->filter_state.imsi); - OSMO_ASSERT(talloc_parent(con->filter_state.imsi) == con); - - /* just some basic length checking... */ - for (i = ARRAY_SIZE(id_resp); i >= 0; --i) { - msgb_reset(msg); - copy_to_msg(msg, id_resp, ARRAY_SIZE(id_resp)); - - parsed = bsc_nat_parse(msg); - if (!parsed) - continue; - - con->filter_state.imsi_checked = 0; - memset(&cause, 0, sizeof(cause)); - bsc_nat_filter_dt(bsc, msg, con, parsed, &cause); - } - - msgb_free(msg); - bsc_nat_free(nat); -} - -static void test_setup_rewrite() -{ - struct msgb *msg = msgb_alloc(4096, "test_dt_filter"); - struct msgb *out; - struct bsc_nat_parsed *parsed; - const char *imsi = "27408000001234"; - - struct bsc_nat *nat = bsc_nat_alloc(); - - /* a fake list */ - struct osmo_config_list entries; - struct osmo_config_entry entry; - - INIT_LLIST_HEAD(&entries.entry); - entry.mcc = "274"; - entry.mnc = "08"; - entry.option = "^0([1-9])"; - entry.text = "0049"; - llist_add_tail(&entry.list, &entries.entry); - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries); - - /* verify that nothing changed */ - msgb_reset(msg); - copy_to_msg(msg, cc_setup_international, ARRAY_SIZE(cc_setup_international)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (msg != out) { - printf("FAIL: The message should not have been changed\n"); - abort(); - } - - verify_msg(out, cc_setup_international, ARRAY_SIZE(cc_setup_international)); - talloc_free(parsed); - - /* verify that something in the message changes */ - msgb_reset(msg); - copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (!out) { - printf("FAIL: A new message should be created.\n"); - abort(); - } - - if (msg == out) { - printf("FAIL: The message should have changed\n"); - abort(); - } - - verify_msg(out, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched)); - msgb_free(out); - - /* Make sure that a wildcard is matching */ - entry.mnc = "*"; - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries); - msg = msgb_alloc(4096, "test_dt_filter"); - copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (!out) { - printf("FAIL: A new message should be created.\n"); - abort(); - } - - if (msg == out) { - printf("FAIL: The message should have changed\n"); - abort(); - } - - verify_msg(out, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched)); - msgb_free(out); - - /* Make sure that a wildcard is matching */ - entry.mnc = "09"; - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries); - msg = msgb_alloc(4096, "test_dt_filter"); - copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (out != msg) { - printf("FAIL: The message should be unchanged.\n"); - abort(); - } - - verify_msg(out, cc_setup_national, ARRAY_SIZE(cc_setup_national)); - msgb_free(out); - - /* Now see what happens to an international number */ - entry.mnc = "*"; - entry.option = "^\\+[0-9][0-9]([1-9])"; - entry.text = "0036"; - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries); - msg = msgb_alloc(4096, "test_dt_filter"); - copy_to_msg(msg, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp %d\n", __LINE__); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (!out) { - printf("FAIL: A new message should be created %d.\n", __LINE__); - abort(); - } - - if (msg == out) { - printf("FAIL: The message should have changed %d\n", __LINE__); - abort(); - } - - verify_msg(out, cc_setup_national_patched_patched, - ARRAY_SIZE(cc_setup_national_patched_patched)); - msgb_free(out); - - /* go from international back to national */ - entry.mnc = "*"; - entry.option = "^\\+([0-9])"; - entry.text = "36"; - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries); - msg = msgb_alloc(4096, "test_dt_filter"); - copy_to_msg(msg, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp %d\n", __LINE__); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (!out) { - printf("FAIL: A new message should be created %d.\n", __LINE__); - abort(); - } - - if (msg == out) { - printf("FAIL: The message should have changed %d\n", __LINE__); - abort(); - } - - verify_msg(out, cc_setup_national_again, - ARRAY_SIZE(cc_setup_national_again)); - msgb_free(out); - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, NULL); - bsc_nat_free(nat); -} - -static void test_setup_rewrite_prefix(void) -{ - struct msgb *msg = msgb_alloc(4096, "test_dt_filter"); - struct msgb *out; - struct bsc_nat_parsed *parsed; - const char *imsi = "27408000001234"; - - struct bsc_nat *nat = bsc_nat_alloc(); - - /* a fake list */ - struct osmo_config_list entries; - struct osmo_config_entry entry; - - INIT_LLIST_HEAD(&entries.entry); - entry.mcc = "274"; - entry.mnc = "08"; - entry.option = "^0([1-9])"; - entry.text = "prefix_lookup"; - llist_add_tail(&entry.list, &entries.entry); - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries); - - nat->num_rewr_trie = nat_rewrite_parse(nat, "prefixes.csv"); - - msgb_reset(msg); - copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (!out) { - printf("FAIL: A new message should be created.\n"); - abort(); - } - - if (msg == out) { - printf("FAIL: The message should have changed\n"); - abort(); - } - - verify_msg(out, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched)); - msgb_free(out); - - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, NULL); - bsc_nat_free(nat); -} - -static void test_setup_rewrite_post(void) -{ - struct msgb *msg = msgb_alloc(4096, "test_dt_filter"); - struct msgb *out; - struct bsc_nat_parsed *parsed; - const char *imsi = "27408000001234"; - - struct bsc_nat *nat = bsc_nat_alloc(); - - /* a fake list */ - struct osmo_config_list entries; - struct osmo_config_entry entry; - struct osmo_config_list entries_post; - struct osmo_config_entry entry_post; - - INIT_LLIST_HEAD(&entries.entry); - entry.mcc = "274"; - entry.mnc = "08"; - entry.option = "^0([1-9])"; - entry.text = "0049"; - llist_add_tail(&entry.list, &entries.entry); - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries); - - /* attempt to undo the previous one */ - INIT_LLIST_HEAD(&entries_post.entry); - entry_post.mcc = "274"; - entry_post.mnc = "08"; - entry_post.option = "^\\+49([1-9])"; - entry_post.text = "prefix_lookup"; - llist_add_tail(&entry_post.list, &entries_post.entry); - bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr_post, &entries_post); - - nat->num_rewr_trie = nat_rewrite_parse(nat, "prefixes.csv"); - - msgb_reset(msg); - copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse ID resp\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (!out) { - printf("FAIL: A new message should be created.\n"); - abort(); - } - - if (msg == out) { - printf("FAIL: The message should have changed\n"); - abort(); - } - - verify_msg(out, cc_setup_national, ARRAY_SIZE(cc_setup_national)); - msgb_free(out); - - bsc_nat_free(nat); -} - -static void test_sms_smsc_rewrite() -{ - struct msgb *msg = msgb_alloc(4096, "SMSC rewrite"), *out; - struct bsc_nat_parsed *parsed; - const char *imsi = "515039900406700"; - - struct bsc_nat *nat = bsc_nat_alloc(); - - /* a fake list */ - struct osmo_config_list smsc_entries, dest_entries, clear_entries; - struct osmo_config_entry smsc_entry, dest_entry, clear_entry; - - INIT_LLIST_HEAD(&smsc_entries.entry); - INIT_LLIST_HEAD(&dest_entries.entry); - INIT_LLIST_HEAD(&clear_entries.entry); - smsc_entry.mcc = "^515039"; - smsc_entry.option = "639180000105()"; - smsc_entry.text = "6666666666667"; - llist_add_tail(&smsc_entry.list, &smsc_entries.entry); - dest_entry.mcc = "515"; - dest_entry.mnc = "03"; - dest_entry.option = "^0049"; - dest_entry.text = ""; - llist_add_tail(&dest_entry.list, &dest_entries.entry); - clear_entry.mcc = "^515039"; - clear_entry.option = "^0049"; - clear_entry.text = ""; - llist_add_tail(&clear_entry.list, &clear_entries.entry); - - bsc_nat_num_rewr_entry_adapt(nat, &nat->smsc_rewr, &smsc_entries); - bsc_nat_num_rewr_entry_adapt(nat, &nat->tpdest_match, &dest_entries); - bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_clear_tp_srr, &clear_entries); - - printf("Testing SMSC rewriting.\n"); - - /* - * Check if the SMSC address is changed - */ - copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse SMS\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (out == msg) { - printf("FAIL: This should have changed.\n"); - abort(); - } - - verify_msg(out, smsc_rewrite_patched, ARRAY_SIZE(smsc_rewrite_patched)); - msgb_free(out); - - /* clear out the filter for SMSC */ - printf("Attempting to only rewrite the HDR\n"); - bsc_nat_num_rewr_entry_adapt(nat, &nat->smsc_rewr, NULL); - msg = msgb_alloc(4096, "SMSC rewrite"); - copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse SMS\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (out == msg) { - printf("FAIL: This should have changed.\n"); - abort(); - } - - verify_msg(out, smsc_rewrite_patched_hdr, ARRAY_SIZE(smsc_rewrite_patched_hdr)); - msgb_free(out); - - /* clear out the next filter */ - printf("Attempting to change nothing.\n"); - bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_clear_tp_srr, NULL); - msg = msgb_alloc(4096, "SMSC rewrite"); - copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse SMS\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (out != msg) { - printf("FAIL: This should not have changed.\n"); - abort(); - } - - verify_msg(out, smsc_rewrite, ARRAY_SIZE(smsc_rewrite)); - msgb_free(out); - bsc_nat_free(nat); -} - -static void test_sms_number_rewrite(void) -{ - struct msgb *msg, *out; - struct bsc_nat_parsed *parsed; - const char *imsi = "515039900406700"; - - struct bsc_nat *nat = bsc_nat_alloc(); - - /* a fake list */ - struct osmo_config_list num_entries, clear_entries; - struct osmo_config_entry num_entry, clear_entry; - - INIT_LLIST_HEAD(&num_entries.entry); - num_entry.mcc = "^515039"; - num_entry.option = "^0049()"; - num_entry.text = "0032"; - llist_add_tail(&num_entry.list, &num_entries.entry); - - bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_num_rewr, &num_entries); - - printf("Testing SMS TP-DA rewriting.\n"); - - /* - * Check if the SMSC address is changed - */ - msg = msgb_alloc(4096, "SMSC rewrite"); - copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse SMS\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (out == msg) { - printf("FAIL: This should have changed.\n"); - abort(); - } - - verify_msg(out, smsc_rewrite_num_patched, - ARRAY_SIZE(smsc_rewrite_num_patched)); - msgb_free(out); - - /* - * Now with TP-SRR rewriting enabled - */ - INIT_LLIST_HEAD(&clear_entries.entry); - clear_entry.mcc = "^515039"; - clear_entry.option = ""; - clear_entry.text = ""; - llist_add_tail(&clear_entry.list, &clear_entries.entry); - bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_clear_tp_srr, &clear_entries); - - msg = msgb_alloc(4096, "SMSC rewrite"); - copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite)); - parsed = bsc_nat_parse(msg); - if (!parsed) { - printf("FAIL: Could not parse SMS\n"); - abort(); - } - - out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi); - if (out == msg) { - printf("FAIL: This should have changed.\n"); - abort(); - } - - verify_msg(out, smsc_rewrite_num_patched_tp_srr, - ARRAY_SIZE(smsc_rewrite_num_patched_tp_srr)); - msgb_free(out); - bsc_nat_free(nat); -} - -static void test_barr_list_parsing(void) -{ - int rc; - int cm, lu; - struct rb_node *node; - struct rb_root root = RB_ROOT; - struct osmo_config_list *lst = osmo_config_list_parse(NULL, "barr.cfg"); - if (lst == NULL) - abort(); - - rc = bsc_filter_barr_adapt(NULL, &root, lst); - if (rc != 0) - abort(); - talloc_free(lst); - - - for (node = rb_first(&root); node; node = rb_next(node)) { - struct bsc_filter_barr_entry *entry; - entry = rb_entry(node, struct bsc_filter_barr_entry, node); - printf("IMSI: %s CM: %d LU: %d\n", entry->imsi, - entry->cm_reject_cause, entry->lu_reject_cause); - } - - /* do the look up now.. */ - rc = bsc_filter_barr_find(&root, "12123119", &cm, &lu); - if (!rc) { - printf("Failed to find the IMSI.\n"); - abort(); - } - - if (cm != 3 || lu != 4) { - printf("Found CM(%d) and LU(%d)\n", cm, lu); - abort(); - } - - /* empty and check that it is empty */ - bsc_filter_barr_adapt(NULL, &root, NULL); - if (!RB_EMPTY_ROOT(&root)) { - printf("Failed to empty the list.\n"); - abort(); - } - - /* check that dup results in an error */ - lst = osmo_config_list_parse(NULL, "barr_dup.cfg"); - if (lst == NULL) { - printf("Failed to parse list with dups\n"); - abort(); - } - - rc = bsc_filter_barr_adapt(NULL, &root, lst); - if (rc != -1) { - printf("It should have failed due dup\n"); - abort(); - } - talloc_free(lst); - - /* dump for reference */ - for (node = rb_first(&root); node; node = rb_next(node)) { - struct bsc_filter_barr_entry *entry; - entry = rb_entry(node, struct bsc_filter_barr_entry, node); - printf("IMSI: %s CM: %d LU: %d\n", entry->imsi, - entry->cm_reject_cause, entry->lu_reject_cause); - - } - rc = bsc_filter_barr_adapt(NULL, &root, NULL); -} - -static void test_nat_extract_lac() -{ - int res; - struct bsc_connection *bsc; - struct bsc_nat *nat; - struct nat_sccp_connection con; - struct bsc_nat_parsed *parsed; - struct msgb *msg = msgb_alloc(4096, "test-message"); - - printf("Testing LAC extraction from SCCP CR\n"); - - /* initialize the testcase */ - nat = bsc_nat_alloc(); - bsc = bsc_connection_alloc(nat); - bsc->cfg = bsc_config_alloc(nat, "foo", 0); - - memset(&con, 0, sizeof(con)); - con.bsc = bsc; - - /* create the SCCP CR */ - msg->l2h = msgb_put(msg, ARRAY_SIZE(bssmap_cr)); - memcpy(msg->l2h, bssmap_cr, ARRAY_SIZE(bssmap_cr)); - - /* parse it and pass it on */ - parsed = bsc_nat_parse(msg); - res = bsc_nat_extract_lac(bsc, &con, parsed, msg); - OSMO_ASSERT(res == 0); - - /* verify the LAC */ - OSMO_ASSERT(con.lac == 8210); - OSMO_ASSERT(con.ci == 50000); - - bsc_nat_free(nat); -} - -int main(int argc, char **argv) -{ - msgb_talloc_ctx_init(NULL, 0); - sccp_set_log_area(DSCCP); - osmo_init_logging(&log_info); - - test_filter(); - test_contrack(); - test_paging(); - test_mgcp_ass_tracking(); - test_mgcp_find(); - test_mgcp_rewrite(); - test_mgcp_parse(); - test_cr_filter(); - test_dt_filter(); - test_setup_rewrite(); - test_setup_rewrite_prefix(); - test_setup_rewrite_post(); - test_sms_smsc_rewrite(); - test_sms_number_rewrite(); - test_mgcp_allocations(); - test_barr_list_parsing(); - test_nat_extract_lac(); - - printf("Testing execution completed.\n"); - return 0; -} - -/* stub */ -void bsc_nat_send_mgcp_to_msc(struct bsc_nat *nat, struct msgb *msg) -{ - abort(); -} diff --git a/tests/bsc-nat/bsc_nat_test.ok b/tests/bsc-nat/bsc_nat_test.ok deleted file mode 100644 index ab04f4273..000000000 --- a/tests/bsc-nat/bsc_nat_test.ok +++ /dev/null @@ -1,39 +0,0 @@ -Testing BSS Filtering. -Going to test item: 0 -Going to test item: 1 -Going to test item: 2 -Going to test item: 3 -Going to test item: 4 -Going to test item: 5 -Going to test item: 6 -Going to test item: 7 -Going to test item: 8 -Going to test item: 9 -Going to test item: 10 -Going to test item: 11 -Going to test item: 12 -Testing connection tracking. -Testing paging by lac. -Testing MGCP. -Testing finding of a BSC Connection -Testing rewriting MGCP messages. -Testing MGCP response parsing. -Testing SMSC rewriting. -Attempting to only rewrite the HDR -Attempting to change nothing. -Testing SMS TP-DA rewriting. -IMSI: 12123115 CM: 3 LU: 4 -IMSI: 12123116 CM: 3 LU: 4 -IMSI: 12123117 CM: 3 LU: 4 -IMSI: 12123118 CM: 3 LU: 4 -IMSI: 12123119 CM: 3 LU: 4 -IMSI: 12123120 CM: 3 LU: 4 -IMSI: 12123123 CM: 3 LU: 1 -IMSI: 12123124 CM: 3 LU: 2 -IMSI: 12123125 CM: 3 LU: 3 -IMSI: 12123126 CM: 3 LU: 4 -IMSI: 12123127 CM: 3 LU: 5 -IMSI: 12123128 CM: 3 LU: 6 -IMSI: 12123124 CM: 3 LU: 2 -Testing LAC extraction from SCCP CR -Testing execution completed. diff --git a/tests/bsc-nat/prefixes.csv b/tests/bsc-nat/prefixes.csv deleted file mode 100644 index 0c7660f10..000000000 --- a/tests/bsc-nat/prefixes.csv +++ /dev/null @@ -1,2 +0,0 @@ -0172,0049 -+49,0 diff --git a/tests/bsc/Makefile.am b/tests/bsc/Makefile.am deleted file mode 100644 index 904bdfcd7..000000000 --- a/tests/bsc/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOSCCP_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(NULL) - -AM_LDFLAGS = \ - $(COVERAGE_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - bsc_test.ok \ - $(NULL) - -noinst_PROGRAMS = \ - bsc_test \ - $(NULL) - -bsc_test_SOURCES = \ - bsc_test.c \ - $(top_srcdir)/src/osmo-bsc/osmo_bsc_filter.c \ - $(NULL) - -bsc_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/src/libmgcp/libmgcp.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOSCCP_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - -lrt \ - $(NULL) diff --git a/tests/bsc/bsc_test.c b/tests/bsc/bsc_test.c deleted file mode 100644 index 20ed5b43b..000000000 --- a/tests/bsc/bsc_test.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * BSC Message filtering - * - * (C) 2013 by sysmocom s.f.m.c. GmbH - * Written by Jacob Erlbeck - * (C) 2010-2013 by Holger Hans Peter Freyther - * (C) 2010-2013 by On-Waves - * - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -enum test { - TEST_SCAN_TO_BTS, - TEST_SCAN_TO_MSC, -}; - -/* GSM 04.08 MM INFORMATION test message */ -static uint8_t gsm48_mm_info_nn_tzt[] = { - 0x05, 0x32, 0x45, 0x08, 0x80, 0x4f, 0x77, 0xeb, - 0x1a, 0xb6, 0x97, 0xe7, 0x47, 0x31, 0x90, 0x61, - 0x11, 0x02, 0x73, 0x00, -}; - -static uint8_t gsm48_mm_info_nn_tzt_out[] = { - 0x05, 0x32, 0x45, 0x08, 0x80, 0x4f, 0x77, 0xeb, - 0x1a, 0xb6, 0x97, 0xe7, 0x47, 0x31, 0x90, 0x61, - 0x11, 0x02, 0x73, 0x1a, -}; - -static uint8_t gsm48_mm_info_nn_tzt_dst[] = { - 0x05, 0x32, 0x45, 0x08, 0x80, 0x4f, 0x77, 0xeb, - 0x1a, 0xb6, 0x97, 0xe7, 0x47, 0x31, 0x90, 0x61, - 0x11, 0x02, 0x73, 0x00, 0x49, 0x01, 0x00, -}; - -static uint8_t gsm48_mm_info_nn_tzt_dst_out[] = { - 0x05, 0x32, 0x45, 0x08, 0x80, 0x4f, 0x77, 0xeb, - 0x1a, 0xb6, 0x97, 0xe7, 0x47, 0x31, 0x90, 0x61, - 0x11, 0x02, 0x73, 0x1a, 0x49, 0x01, 0x02, -}; - -struct test_definition { - const uint8_t *data; - const uint16_t length; - const int dir; - const int result; - const uint8_t *out_data; - const uint16_t out_length; - const char* params; - const int n_params; -}; - -static int get_int(const char *params, size_t nmemb, const char *key, int def, int *is_set) -{ - const char *kv = NULL; - - kv = strstr(params, key); - if (kv) { - kv += strlen(key) + 1; - fprintf(stderr, "get_int(%s) -> %d\n", key, atoi(kv)); - if (is_set) - *is_set = 1; - } - - return kv ? atoi(kv) : def; -} - -static const struct test_definition test_scan_defs[] = { - { - .data = gsm48_mm_info_nn_tzt_dst, - .length = ARRAY_SIZE(gsm48_mm_info_nn_tzt), - .dir = TEST_SCAN_TO_BTS, - .result = 0, - .out_data = gsm48_mm_info_nn_tzt_dst_out, - .out_length = ARRAY_SIZE(gsm48_mm_info_nn_tzt_out), - .params = "tz_hr=-5 tz_mn=15 tz_dst=2", - .n_params = 3, - }, - { - .data = gsm48_mm_info_nn_tzt_dst, - .length = ARRAY_SIZE(gsm48_mm_info_nn_tzt_dst), - .dir = TEST_SCAN_TO_BTS, - .result = 0, - .out_data = gsm48_mm_info_nn_tzt_dst_out, - .out_length = ARRAY_SIZE(gsm48_mm_info_nn_tzt_dst_out), - .params = "tz_hr=-5 tz_mn=15 tz_dst=2", - .n_params = 3, - }, -}; - -static void test_scan(void) -{ - int i; - - struct gsm_network *net; - struct gsm_bts *bts; - struct osmo_bsc_sccp_con *sccp_con; - struct bsc_msc_data *msc; - struct gsm_subscriber_connection *conn; - - net = talloc_zero(NULL, struct gsm_network); - bts = talloc_zero(net, struct gsm_bts); - sccp_con = talloc_zero(net, struct osmo_bsc_sccp_con); - msc = talloc_zero(net, struct bsc_msc_data); - conn = talloc_zero(net, struct gsm_subscriber_connection); - - bts->network = net; - sccp_con->msc = msc; - conn->bts = bts; - conn->sccp_con = sccp_con; - - /* start testing with proper messages */ - printf("Testing BTS<->MSC message scan.\n"); - for (i = 0; i < ARRAY_SIZE(test_scan_defs); ++i) { - const struct test_definition *test_def = &test_scan_defs[i]; - int result; - struct msgb *msg = msgb_alloc(4096, "test-message"); - int is_set = 0; - - net->tz.hr = get_int(test_def->params, test_def->n_params, "tz_hr", 0, &is_set); - net->tz.mn = get_int(test_def->params, test_def->n_params, "tz_mn", 0, &is_set); - net->tz.dst = get_int(test_def->params, test_def->n_params, "tz_dst", 0, &is_set); - net->tz.override = 1; - - printf("Going to test item: %d\n", i); - msg->l3h = msgb_put(msg, test_def->length); - memcpy(msg->l3h, test_def->data, test_def->length); - - switch (test_def->dir) { - case TEST_SCAN_TO_BTS: - /* override timezone of msg coming from the MSC */ - result = bsc_scan_msc_msg(conn, msg); - break; - case TEST_SCAN_TO_MSC: - /* override timezone of msg coming from the BSC */ - /* FIXME: no test for this case is defined in - * test_scan_defs[], so this is never used. */ - result = bsc_scan_bts_msg(conn, msg); - break; - default: - abort(); - break; - } - - if (result != test_def->result) { - printf("FAIL: Not the expected result, got: %d wanted: %d\n", - result, test_def->result); - goto out; - } - - if (msgb_l3len(msg) != test_def->out_length) { - printf("FAIL: Not the expected message size, got: %d wanted: %d\n", - msgb_l3len(msg), test_def->out_length); - goto out; - } - - if (memcmp(msgb_l3(msg), test_def->out_data, test_def->out_length) != 0) { - printf("FAIL: Not the expected message\n"); - goto out; - } - -out: - msgb_free(msg); - } - - talloc_free(net); -} - - -int main(int argc, char **argv) -{ - msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&log_info); - - test_scan(); - - printf("Testing execution completed.\n"); - return 0; -} diff --git a/tests/bsc/bsc_test.ok b/tests/bsc/bsc_test.ok deleted file mode 100644 index 0564bf0cd..000000000 --- a/tests/bsc/bsc_test.ok +++ /dev/null @@ -1,4 +0,0 @@ -Testing BTS<->MSC message scan. -Going to test item: 0 -Going to test item: 1 -Testing execution completed. diff --git a/tests/channel/Makefile.am b/tests/channel/Makefile.am deleted file mode 100644 index dd78bdcf9..000000000 --- a/tests/channel/Makefile.am +++ /dev/null @@ -1,35 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - channel_test.ok \ - $(NULL) - -noinst_PROGRAMS = \ - channel_test \ - $(NULL) - -channel_test_SOURCES = \ - channel_test.c \ - $(NULL) - -channel_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libvlr/libvlr.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBCRYPTO_LIBS) \ - -ldbi \ - $(NULL) diff --git a/tests/channel/channel_test.c b/tests/channel/channel_test.c deleted file mode 100644 index f6869691c..000000000 --- a/tests/channel/channel_test.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * (C) 2009 by Holger Hans Peter Freyther - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include - -void test_dyn_ts_subslots(void) -{ - struct gsm_bts_trx_ts ts; - - printf("Testing subslot numbers for pchan types\n"); - - ts.pchan = GSM_PCHAN_TCH_F; - OSMO_ASSERT(ts_subslots(&ts) == 1); - - ts.pchan = GSM_PCHAN_TCH_H; - OSMO_ASSERT(ts_subslots(&ts) == 2); - - ts.pchan = GSM_PCHAN_PDCH; - OSMO_ASSERT(ts_subslots(&ts) == 0); - - ts.pchan = GSM_PCHAN_TCH_F_PDCH; - ts.flags = 0; /* TCH_F mode */ - OSMO_ASSERT(ts_subslots(&ts) == 1); - ts.flags = TS_F_PDCH_ACTIVE; - OSMO_ASSERT(ts_subslots(&ts) == 0); - - ts.pchan = GSM_PCHAN_TCH_F_TCH_H_PDCH; - ts.dyn.pchan_is = GSM_PCHAN_TCH_F; - OSMO_ASSERT(ts_subslots(&ts) == 1); - ts.dyn.pchan_is = GSM_PCHAN_TCH_H; - OSMO_ASSERT(ts_subslots(&ts) == 2); - ts.dyn.pchan_is = GSM_PCHAN_PDCH; - OSMO_ASSERT(ts_subslots(&ts) == 0); -} - -int main(int argc, char **argv) -{ - osmo_init_logging(&log_info); - - test_dyn_ts_subslots(); - - return EXIT_SUCCESS; -} - -void _abis_nm_sendmsg() {} -void sms_alloc() {} -void sms_free() {} -void gsm_net_update_ctype(struct gsm_network *network) {} -void gsm48_secure_channel() {} -void paging_request_stop() {} -void vty_out() {} - -void ipa_client_conn_clear_queue() {} -void ipa_client_conn_close() {} -void ipa_client_conn_create() {} -void ipa_client_conn_destroy() {} -void ipa_client_conn_open() {} -void ipa_client_conn_send() {} -void ipa_msg_push_header() {} -void ipaccess_bts_handle_ccm() {} - -struct tlv_definition nm_att_tlvdef; diff --git a/tests/channel/channel_test.ok b/tests/channel/channel_test.ok deleted file mode 100644 index e4d625a65..000000000 --- a/tests/channel/channel_test.ok +++ /dev/null @@ -1 +0,0 @@ -Testing subslot numbers for pchan types diff --git a/tests/db/Makefile.am b/tests/db/Makefile.am deleted file mode 100644 index bcb66ec32..000000000 --- a/tests/db/Makefile.am +++ /dev/null @@ -1,47 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(LIBSMPP34_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(NULL) - -AM_LDFLAGS = \ - $(COVERAGE_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - db_test.ok \ - db_test.err \ - hlr.sqlite3 \ - $(NULL) - -noinst_PROGRAMS = \ - db_test \ - $(NULL) - -db_test_SOURCES = \ - db_test.c \ - $(NULL) - -db_test_LDADD = \ - $(top_builddir)/src/libmsc/libmsc.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(top_builddir)/tests/libiudummy/libiudummy.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBSMPP34_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBCRYPTO_LIBS) \ - -ldbi \ - $(NULL) diff --git a/tests/db/db_test.c b/tests/db/db_test.c deleted file mode 100644 index a0c1e79c3..000000000 --- a/tests/db/db_test.c +++ /dev/null @@ -1,286 +0,0 @@ -/* (C) 2008 by Jan Luebbe - * (C) 2009-2016 by Holger Hans Peter Freyther - * (C) 2014 by Alexander Chemeris - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -static struct gsm_network dummy_net; -static struct gsm_subscriber_group dummy_sgrp; - -#define SUBSCR_PUT(sub) \ - sub->group = &dummy_sgrp; \ - subscr_put(sub); - -#define COMPARE(original, copy) \ - if (original->id != copy->id) \ - printf("Ids do not match in %s:%d %llu %llu\n", \ - __FUNCTION__, __LINE__, original->id, copy->id); \ - if (original->lac != copy->lac) \ - printf("LAC do not match in %s:%d %d %d\n", \ - __FUNCTION__, __LINE__, original->lac, copy->lac); \ - if (original->authorized != copy->authorized) \ - printf("Authorize do not match in %s:%d %d %d\n", \ - __FUNCTION__, __LINE__, original->authorized, \ - copy->authorized); \ - if (strcmp(original->imsi, copy->imsi) != 0) \ - printf("IMSIs do not match in %s:%d '%s' '%s'\n", \ - __FUNCTION__, __LINE__, original->imsi, copy->imsi); \ - if (original->tmsi != copy->tmsi) \ - printf("TMSIs do not match in %s:%d '%u' '%u'\n", \ - __FUNCTION__, __LINE__, original->tmsi, copy->tmsi); \ - if (strcmp(original->name, copy->name) != 0) \ - printf("names do not match in %s:%d '%s' '%s'\n", \ - __FUNCTION__, __LINE__, original->name, copy->name); \ - if (strcmp(original->extension, copy->extension) != 0) \ - printf("Extensions do not match in %s:%d '%s' '%s'\n", \ - __FUNCTION__, __LINE__, original->extension, copy->extension); \ - -/* - * Create/Store a SMS and then try to load it. - */ -static void test_sms(void) -{ - int rc; - struct gsm_sms *sms; - struct gsm_subscriber *subscr; - subscr = db_get_subscriber(GSM_SUBSCRIBER_IMSI, "9993245423445"); - OSMO_ASSERT(subscr); - subscr->group = &dummy_sgrp; - - sms = sms_alloc(); - sms->receiver = subscr_get(subscr); - - sms->src.ton = 0x23; - sms->src.npi = 0x24; - memcpy(sms->src.addr, "1234", strlen("1234") + 1); - - sms->dst.ton = 0x32; - sms->dst.npi = 0x42; - memcpy(sms->dst.addr, subscr->extension, sizeof(subscr->extension)); - - memcpy(sms->text, "Text123", strlen("Text123") + 1); - memcpy(sms->user_data, "UserData123", strlen("UserData123") + 1); - sms->user_data_len = strlen("UserData123"); - - /* random values */ - sms->reply_path_req = 1; - sms->status_rep_req = 2; - sms->ud_hdr_ind = 3; - sms->protocol_id = 4; - sms->data_coding_scheme = 5; - - rc = db_sms_store(sms); - sms_free(sms); - OSMO_ASSERT(rc == 0); - - /* now query */ - sms = db_sms_get_unsent_for_subscr(subscr); - OSMO_ASSERT(sms); - OSMO_ASSERT(sms->receiver == subscr); - OSMO_ASSERT(sms->reply_path_req == 1); - OSMO_ASSERT(sms->status_rep_req == 2); - OSMO_ASSERT(sms->ud_hdr_ind == 3); - OSMO_ASSERT(sms->protocol_id == 4); - OSMO_ASSERT(sms->data_coding_scheme == 5); - OSMO_ASSERT(sms->src.ton == 0x23); - OSMO_ASSERT(sms->src.npi == 0x24); - OSMO_ASSERT(sms->dst.ton == 0x32); - OSMO_ASSERT(sms->dst.npi == 0x42); - OSMO_ASSERT(strcmp((char *) sms->text, "Text123") == 0); - OSMO_ASSERT(sms->user_data_len == strlen("UserData123")); - OSMO_ASSERT(strcmp((char *) sms->user_data, "UserData123") == 0); - - /* Mark the SMS as delivered */ - db_sms_mark_delivered(sms); - sms_free(sms); - - sms = db_sms_get_unsent_for_subscr(subscr); - OSMO_ASSERT(!sms); - - subscr_put(subscr); -} - -static void test_sms_migrate(void) -{ - struct gsm_subscriber *rcv_subscr; - struct gsm_sms *sms; - static const uint8_t user_data_1[] = { - 0x41, 0xf1, 0xd8, 0x05, 0x22, 0x96, 0xcd, 0x2e, - 0x90, 0xf1, 0xfd, 0x06, 0x00 }; - static const uint8_t user_data_2[] = { - 0x41, 0xf1, 0xd8, 0x05, 0x22, 0x96, 0xcd, 0x2e, - 0xd0, 0xf1, 0xfd, 0x06, 0x00 }; - - rcv_subscr = db_get_subscriber(GSM_SUBSCRIBER_IMSI, "901010000001111"); - rcv_subscr->group = &dummy_sgrp; - - sms = db_sms_get(&dummy_net, 1); - OSMO_ASSERT(sms->id == 1); - OSMO_ASSERT(sms->receiver == rcv_subscr); - OSMO_ASSERT(strcmp(sms->text, "Abc. Def. Foo") == 0); - OSMO_ASSERT(sms->user_data_len == ARRAY_SIZE(user_data_1)); - OSMO_ASSERT(memcmp(sms->user_data, user_data_1, ARRAY_SIZE(user_data_1)) == 0); - sms_free(sms); - - sms = db_sms_get(&dummy_net, 2); - OSMO_ASSERT(sms->id == 2); - OSMO_ASSERT(sms->receiver == rcv_subscr); - OSMO_ASSERT(strcmp(sms->text, "Abc. Def. Goo") == 0); - OSMO_ASSERT(sms->user_data_len == ARRAY_SIZE(user_data_2)); - OSMO_ASSERT(memcmp(sms->user_data, user_data_2, ARRAY_SIZE(user_data_2)) == 0); - sms_free(sms); - - subscr_put(rcv_subscr); -} - -static void test_subs(const char *imsi, char *imei1, char *imei2, bool make_ext) -{ - struct gsm_subscriber *alice = NULL, *alice_db; - char scratch_str[256]; - - alice = db_create_subscriber(imsi, GSM_MIN_EXTEN, GSM_MAX_EXTEN, - make_ext); - db_subscriber_assoc_imei(alice, imei1); - if (imei2) - db_subscriber_assoc_imei(alice, imei2); - db_subscriber_alloc_tmsi(alice); - alice->lac=42; - db_sync_subscriber(alice); - /* Get by TMSI */ - snprintf(scratch_str, sizeof(scratch_str), "%"PRIu32, alice->tmsi); - alice_db = db_get_subscriber(GSM_SUBSCRIBER_TMSI, scratch_str); - COMPARE(alice, alice_db); - SUBSCR_PUT(alice_db); - /* Get by IMSI */ - alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, imsi); - COMPARE(alice, alice_db); - SUBSCR_PUT(alice_db); - /* Get by id */ - snprintf(scratch_str, sizeof(scratch_str), "%llu", alice->id); - alice_db = db_get_subscriber(GSM_SUBSCRIBER_ID, scratch_str); - COMPARE(alice, alice_db); - SUBSCR_PUT(alice_db); - /* Get by extension */ - alice_db = db_get_subscriber(GSM_SUBSCRIBER_EXTENSION, alice->extension); - if (alice_db) { - if (!make_ext) - printf("FAIL: bogus extension created for IMSI %s\n", - imsi); - COMPARE(alice, alice_db); - SUBSCR_PUT(alice_db); - } else if (make_ext) - printf("FAIL: no subscriber extension for IMSI %s\n", imsi); - SUBSCR_PUT(alice); -} - -int main() -{ - printf("Testing subscriber database code.\n"); - osmo_init_logging(&log_info); - log_set_print_filename(osmo_stderr_target, 0); - - dummy_net.subscr_group = &dummy_sgrp; - dummy_sgrp.net = &dummy_net; - - if (db_init("hlr.sqlite3")) { - printf("DB: Failed to init database. Please check the option settings.\n"); - return 1; - } - printf("DB: Database initialized.\n"); - - if (db_prepare()) { - printf("DB: Failed to prepare database.\n"); - return 1; - } - printf("DB: Database prepared.\n"); - - struct gsm_subscriber *alice = NULL; - struct gsm_subscriber *alice_db; - - char *alice_imsi = "3243245432345"; - alice = db_create_subscriber(alice_imsi, GSM_MIN_EXTEN, GSM_MAX_EXTEN, - true); - db_sync_subscriber(alice); - alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice->imsi); - COMPARE(alice, alice_db); - SUBSCR_PUT(alice_db); - SUBSCR_PUT(alice); - - test_subs("3693245423445", "1234567890", NULL, true); - test_subs("9993245423445", "1234567890", "6543560920", true); - test_subs("3123122223445", "1234567890", NULL, false); - test_subs("9123121223445", "1234567890", "6543560920", false); - - /* create it again and see it fails */ - alice = db_create_subscriber(alice_imsi, GSM_MIN_EXTEN, GSM_MAX_EXTEN, - true); - OSMO_ASSERT(!alice); - - test_sms(); - test_sms_migrate(); - - db_fini(); - - printf("Done\n"); - return 0; -} - -/* stubs */ -void vty_out() {} -void vlr_subscr_disconnected() {} -void vlr_subscr_rx_tmsi_reall_compl() {} -void vlr_subscr_rx_id_resp() {} -void vlr_subscr_rx_auth_resp() {} -void vlr_loc_update() {} -void vlr_proc_acc_req() {} -void vlr_init() {} -unsigned int mgcpgw_client_next_endpoint(struct mgcpgw_client *client) -{ return 0; } -struct msgb *mgcp_msg_crcx(struct mgcpgw_client *mgcp, - uint16_t rtp_endpoint, unsigned int call_id, - enum mgcp_connection_mode mode) -{ return NULL; } -struct msgb *mgcp_msg_mdcx(struct mgcpgw_client *mgcp, - uint16_t rtp_endpoint, const char *rtp_conn_addr, - uint16_t rtp_port, enum mgcp_connection_mode mode) -{ return NULL; } -int mgcpgw_client_tx(struct mgcpgw_client *mgcp, struct msgb *msg, - mgcp_response_cb_t response_cb, void *priv) -{ return -EINVAL; } -const char *mgcpgw_client_remote_addr_str(struct mgcpgw_client *mgcp) -{ return "0.0.0.0"; } -uint32_t mgcpgw_client_remote_addr_n(struct mgcpgw_client *mgcp) -{ return 0; } -int mgcp_response_parse_params(struct mgcp_response *r) -{ return -EINVAL; } -struct RANAP_Cause; -int iu_tx_release(struct ue_conn_ctx *ctx, const struct RANAP_Cause *cause) -{ return 0; } diff --git a/tests/db/db_test.err b/tests/db/db_test.err deleted file mode 100644 index fa9a54c09..000000000 --- a/tests/db/db_test.err +++ /dev/null @@ -1,2 +0,0 @@ -Going to migrate from revision 3 - \ No newline at end of file diff --git a/tests/db/db_test.ok b/tests/db/db_test.ok deleted file mode 100644 index 2632a8c8a..000000000 --- a/tests/db/db_test.ok +++ /dev/null @@ -1,4 +0,0 @@ -Testing subscriber database code. -DB: Database initialized. -DB: Database prepared. -Done diff --git a/tests/db/hlr.sqlite3 b/tests/db/hlr.sqlite3 deleted file mode 100644 index e59dcdca3..000000000 Binary files a/tests/db/hlr.sqlite3 and /dev/null differ diff --git a/tests/gsm0408/Makefile.am b/tests/gsm0408/Makefile.am deleted file mode 100644 index ae81c2c7c..000000000 --- a/tests/gsm0408/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(NULL) - -noinst_PROGRAMS = \ - gsm0408_test \ - $(NULL) - -EXTRA_DIST = \ - gsm0408_test.ok \ - $(NULL) - -gsm0408_test_SOURCES = \ - gsm0408_test.c \ - $(NULL) - -gsm0408_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - -ldbi \ - $(NULL) diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c deleted file mode 100644 index 1b326ee54..000000000 --- a/tests/gsm0408/gsm0408_test.c +++ /dev/null @@ -1,697 +0,0 @@ -/* simple test for the gsm0408 formatting functions */ -/* - * (C) 2008 by Holger Hans Peter Freyther - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#define COMPARE(result, op, value) \ - if (!((result) op (value))) {\ - fprintf(stderr, "Compare failed. Was %x should be %x in %s:%d\n",result, value, __FILE__, __LINE__); \ - exit(-1); \ - } - -#define COMPARE_STR(result, value) \ - if (strcmp(result, value) != 0) { \ - fprintf(stderr, "Compare failed. Was %s should be %s in %s:%d\n",result, value, __FILE__, __LINE__); \ - exit(-1); \ - } - -#define DBG(...) - -#define VERIFY(res, cmp, wanted) \ - if (!(res cmp wanted)) { \ - printf("ASSERT failed: %s:%d Wanted: %d %s %d\n", \ - __FILE__, __LINE__, (int) res, # cmp, (int) wanted); \ - } - - - -/* - * Test Location Area Identifier formatting. Table 10.5.3 of 04.08 - */ -static void test_location_area_identifier(void) -{ - struct gsm48_loc_area_id lai48; - - printf("Testing test location area identifier\n"); - - /* - * Test the default/test setup. Coming from - * bsc_hack.c dumps - */ - gsm48_generate_lai(&lai48, 1, 1, 1); - COMPARE(lai48.digits[0], ==, 0x00); - COMPARE(lai48.digits[1], ==, 0xF1); - COMPARE(lai48.digits[2], ==, 0x10); - COMPARE(lai48.lac, ==, htons(0x0001)); - - gsm48_generate_lai(&lai48, 602, 1, 15); - COMPARE(lai48.digits[0], ==, 0x06); - COMPARE(lai48.digits[1], ==, 0xF2); - COMPARE(lai48.digits[2], ==, 0x10); - COMPARE(lai48.lac, ==, htons(0x000f)); -} - -static inline void gen(struct gsm_bts *bts, const char *s) -{ - int r; - - bts->si_valid = 0; - bts->si_valid |= (1 << SYSINFO_TYPE_2quater); - - printf("generating SI2quater for %zu EARFCNs and %zu UARFCNs...\n", - si2q_earfcn_count(&bts->si_common.si2quater_neigh_list), bts->si_common.uarfcn_length); - - r = gsm_generate_si(bts, SYSINFO_TYPE_2quater); - if (r > 0) - for (bts->si2q_index = 0; bts->si2q_index < bts->si2q_count + 1; bts->si2q_index++) - printf("generated %s SI2quater [%02u/%02u]: [%d] %s\n", - GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_2quater) ? "valid" : "invalid", - bts->si2q_index, bts->si2q_count, r, - osmo_hexdump((void *)GSM_BTS_SI2Q(bts, bts->si2q_index), GSM_MACBLOCK_LEN)); - else - printf("%s() failed to generate SI2quater: %s\n", s, strerror(-r)); -} - -static inline void del_earfcn_b(struct gsm_bts *bts, uint16_t earfcn) -{ - struct osmo_earfcn_si2q *e = &bts->si_common.si2quater_neigh_list; - int r = osmo_earfcn_del(e, earfcn); - if (r) - printf("failed to remove EARFCN %u: %s\n", earfcn, strerror(-r)); - else - printf("removed EARFCN %u - ", earfcn); - - gen(bts, __func__); -} - -static inline void add_earfcn_b(struct gsm_bts *bts, uint16_t earfcn, uint8_t bw) -{ - struct osmo_earfcn_si2q *e = &bts->si_common.si2quater_neigh_list; - int r = osmo_earfcn_add(e, earfcn, bw); - if (r) - printf("failed to add EARFCN %u: %s\n", earfcn, strerror(-r)); - else - printf("added EARFCN %u - ", earfcn); - - gen(bts, __func__); -} - -static inline void _bts_uarfcn_add(struct gsm_bts *bts, uint16_t arfcn, uint16_t scramble, bool diversity) -{ - int r; - - bts->u_offset = 0; - - r = bts_uarfcn_add(bts, arfcn, scramble, diversity); - if (r < 0) - printf("failed to add UARFCN to SI2quater: %s\n", strerror(-r)); - else { - bts->si2q_count = si2q_num(bts) - 1; - gen(bts, __func__); - } -} - -static inline void test_si2q_segfault(void) -{ - struct gsm_bts *bts; - struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, NULL); - printf("Test SI2quater UARFCN (same scrambling code and diversity):\n"); - - if (!network) - exit(1); - bts = gsm_bts_alloc(network); - - _bts_uarfcn_add(bts, 10564, 319, 0); - _bts_uarfcn_add(bts, 10612, 319, 0); - gen(bts, __func__); -} - -static inline void test_si2q_mu(void) -{ - struct gsm_bts *bts; - struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, NULL); - printf("Test SI2quater multiple UARFCNs:\n"); - - if (!network) - exit(1); - bts = gsm_bts_alloc(network); - - _bts_uarfcn_add(bts, 10564, 318, 0); - _bts_uarfcn_add(bts, 10612, 319, 0); - _bts_uarfcn_add(bts, 10612, 31, 0); - _bts_uarfcn_add(bts, 10612, 19, 0); - _bts_uarfcn_add(bts, 10613, 64, 0); - _bts_uarfcn_add(bts, 10613, 164, 0); - _bts_uarfcn_add(bts, 10613, 14, 0); -} - -static inline void test_si2q_u(void) -{ - struct gsm_bts *bts; - struct gsm_network *network = bsc_network_init(NULL, 1, 1, NULL); - printf("Testing SYSINFO_TYPE_2quater UARFCN generation:\n"); - - if (!network) - exit(1); - - bts = gsm_bts_alloc(network); - - /* first generate invalid SI as no UARFCN added */ - gen(bts, __func__); - - /* subsequent calls should produce valid SI if there's enough memory */ - _bts_uarfcn_add(bts, 1982, 13, 1); - _bts_uarfcn_add(bts, 1982, 44, 0); - _bts_uarfcn_add(bts, 1982, 61, 1); - _bts_uarfcn_add(bts, 1982, 89, 1); - _bts_uarfcn_add(bts, 1982, 113, 0); - _bts_uarfcn_add(bts, 1982, 123, 0); - _bts_uarfcn_add(bts, 1982, 56, 1); - _bts_uarfcn_add(bts, 1982, 72, 1); - _bts_uarfcn_add(bts, 1982, 223, 1); - _bts_uarfcn_add(bts, 1982, 14, 0); - _bts_uarfcn_add(bts, 1982, 88, 0); -} - -static inline void test_si2q_e(void) -{ - struct gsm_bts *bts; - struct gsm_network *network = bsc_network_init(NULL, 1, 1, NULL); - printf("Testing SYSINFO_TYPE_2quater EARFCN generation:\n"); - - if (!network) - exit(1); - - bts = gsm_bts_alloc(network); - - bts->si_common.si2quater_neigh_list.arfcn = bts->si_common.data.earfcn_list; - bts->si_common.si2quater_neigh_list.meas_bw = bts->si_common.data.meas_bw_list; - bts->si_common.si2quater_neigh_list.length = MAX_EARFCN_LIST; - bts->si_common.si2quater_neigh_list.thresh_hi = 5; - - osmo_earfcn_init(&bts->si_common.si2quater_neigh_list); - - /* first generate invalid SI as no EARFCN added */ - gen(bts, __func__); - - /* subsequent calls should produce valid SI if there's enough memory and EARFCNs */ - add_earfcn_b(bts, 1917, 5); - del_earfcn_b(bts, 1917); - add_earfcn_b(bts, 1917, 1); - add_earfcn_b(bts, 1932, OSMO_EARFCN_MEAS_INVALID); - add_earfcn_b(bts, 1937, 2); - add_earfcn_b(bts, 1945, OSMO_EARFCN_MEAS_INVALID); - add_earfcn_b(bts, 1965, OSMO_EARFCN_MEAS_INVALID); - add_earfcn_b(bts, 1967, 4); - add_earfcn_b(bts, 1982, 3); -} - -static inline void test_si2q_long(void) -{ - struct gsm_bts *bts; - struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, NULL); - printf("Testing SYSINFO_TYPE_2quater combined EARFCN & UARFCN generation:\n"); - - if (!network) - exit(1); - - bts = gsm_bts_alloc(network); - - bts->si_common.si2quater_neigh_list.arfcn = bts->si_common.data.earfcn_list; - bts->si_common.si2quater_neigh_list.meas_bw = bts->si_common.data.meas_bw_list; - bts->si_common.si2quater_neigh_list.length = MAX_EARFCN_LIST; - bts->si_common.si2quater_neigh_list.thresh_hi = 5; - - osmo_earfcn_init(&bts->si_common.si2quater_neigh_list); - - bts_earfcn_add(bts, 1922, 11, 22, 8,32, 8); - bts_earfcn_add(bts, 1922, 11, 22, 8, 32, 8); - bts_earfcn_add(bts, 1924, 11, 12, 6, 11, 5); - bts_earfcn_add(bts, 1923, 11, 12, 6, 11, 5); - bts_earfcn_add(bts, 1925, 11, 12, 6, 11, 5); - bts_earfcn_add(bts, 2111, 11, 12, 6, 11, 5); - bts_earfcn_add(bts, 2112, 11, 12, 6, 11, 4); - bts_earfcn_add(bts, 2113, 11, 12, 6, 11, 3); - bts_earfcn_add(bts, 2114, 11, 12, 6, 11, 2); - bts_earfcn_add(bts, 2131, 11, 12, 6, 11, 5); - bts_earfcn_add(bts, 2132, 11, 12, 6, 11, 4); - bts_earfcn_add(bts, 2133, 11, 12, 6, 11, 3); - bts_earfcn_add(bts, 2134, 11, 12, 6, 11, 2); - bts_earfcn_add(bts, 2121, 11, 12, 6, 11, 5); - bts_earfcn_add(bts, 2122, 11, 12, 6, 11, 4); - bts_earfcn_add(bts, 2123, 11, 12, 6, 11, 3); - bts_earfcn_add(bts, 2124, 11, 12, 6, 11, 2); - _bts_uarfcn_add(bts, 1976, 13, 1); - _bts_uarfcn_add(bts, 1976, 38, 1); - _bts_uarfcn_add(bts, 1976, 44, 1); - _bts_uarfcn_add(bts, 1976, 120, 1); - _bts_uarfcn_add(bts, 1976, 140, 1); - _bts_uarfcn_add(bts, 1976, 163, 1); - _bts_uarfcn_add(bts, 1976, 166, 1); - _bts_uarfcn_add(bts, 1976, 217, 1); - _bts_uarfcn_add(bts, 1976, 224, 1); - _bts_uarfcn_add(bts, 1976, 225, 1); - _bts_uarfcn_add(bts, 1976, 226, 1); -} - -static void test_mi_functionality(void) -{ - const char *imsi_odd = "987654321098763"; - const char *imsi_even = "9876543210987654"; - const uint32_t tmsi = 0xfabeacd0; - uint8_t mi[128]; - unsigned int mi_len; - char mi_parsed[GSM48_MI_SIZE]; - - printf("Testing parsing and generating TMSI/IMSI\n"); - - /* tmsi code */ - mi_len = gsm48_generate_mid_from_tmsi(mi, tmsi); - gsm48_mi_to_string(mi_parsed, sizeof(mi_parsed), mi + 2, mi_len - 2); - COMPARE((uint32_t)strtoul(mi_parsed, NULL, 10), ==, tmsi); - - /* imsi code */ - mi_len = gsm48_generate_mid_from_imsi(mi, imsi_odd); - gsm48_mi_to_string(mi_parsed, sizeof(mi_parsed), mi + 2, mi_len -2); - printf("hex: %s\n", osmo_hexdump(mi, mi_len)); - COMPARE_STR(mi_parsed, imsi_odd); - - mi_len = gsm48_generate_mid_from_imsi(mi, imsi_even); - gsm48_mi_to_string(mi_parsed, sizeof(mi_parsed), mi + 2, mi_len -2); - printf("hex: %s\n", osmo_hexdump(mi, mi_len)); - COMPARE_STR(mi_parsed, imsi_even); -} - -struct { - int range; - int arfcns_num; - int arfcns[RANGE_ENC_MAX_ARFCNS]; -} arfcn_test_ranges[] = { - {ARFCN_RANGE_512, 12, - { 1, 12, 31, 51, 57, 91, 97, 98, 113, 117, 120, 125 }}, - {ARFCN_RANGE_512, 17, - { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }}, - {ARFCN_RANGE_512, 18, - { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 }}, - {ARFCN_RANGE_512, 18, - { 1, 17, 31, 45, 58, 79, 81, 97, - 113, 127, 213, 277, 287, 311, 331, 391, - 417, 511 }}, - {ARFCN_RANGE_512, 6, - { 1, 17, 31, 45, 58, 79 }}, - {ARFCN_RANGE_512, 6, - { 10, 17, 31, 45, 58, 79 }}, - {ARFCN_RANGE_1024, 17, - { 0, 17, 31, 45, 58, 79, 81, 97, - 113, 127, 213, 277, 287, 311, 331, 391, - 1023 }}, - {ARFCN_RANGE_1024, 16, - { 17, 31, 45, 58, 79, 81, 97, 113, - 127, 213, 277, 287, 311, 331, 391, 1023 }}, - {-1} -}; - -static int test_single_range_encoding(int range, const int *orig_arfcns, - int arfcns_num, int silent) -{ - int arfcns[RANGE_ENC_MAX_ARFCNS]; - int w[RANGE_ENC_MAX_ARFCNS]; - int f0_included = 0; - int rc, f0; - uint8_t chan_list[16] = {0}; - struct gsm_sysinfo_freq dec_freq[1024] = {{0}}; - int dec_arfcns[RANGE_ENC_MAX_ARFCNS] = {0}; - int dec_arfcns_count = 0; - int arfcns_used = 0; - int i; - - arfcns_used = arfcns_num; - memmove(arfcns, orig_arfcns, sizeof(arfcns)); - - f0 = range == ARFCN_RANGE_1024 ? 0 : arfcns[0]; - /* - * Manipulate the ARFCN list according to the rules in J4 depending - * on the selected range. - */ - arfcns_used = range_enc_filter_arfcns(arfcns, arfcns_used, - f0, &f0_included); - - memset(w, 0, sizeof(w)); - range_enc_arfcns(range, arfcns, arfcns_used, w, 0); - - if (!silent) - fprintf(stderr, "range=%d, arfcns_used=%d, f0=%d, f0_included=%d\n", - range, arfcns_used, f0, f0_included); - - /* Select the range and the amount of bits needed */ - switch (range) { - case ARFCN_RANGE_128: - range_enc_range128(chan_list, f0, w); - break; - case ARFCN_RANGE_256: - range_enc_range256(chan_list, f0, w); - break; - case ARFCN_RANGE_512: - range_enc_range512(chan_list, f0, w); - break; - case ARFCN_RANGE_1024: - range_enc_range1024(chan_list, f0, f0_included, w); - break; - default: - return 1; - }; - - if (!silent) - printf("chan_list = %s\n", - osmo_hexdump(chan_list, sizeof(chan_list))); - - rc = gsm48_decode_freq_list(dec_freq, chan_list, sizeof(chan_list), - 0xfe, 1); - if (rc != 0) { - printf("Cannot decode freq list, rc = %d\n", rc); - return 1; - } - - for (i = 0; i < ARRAY_SIZE(dec_freq); i++) { - if (dec_freq[i].mask && - dec_arfcns_count < ARRAY_SIZE(dec_arfcns)) - dec_arfcns[dec_arfcns_count++] = i; - } - - if (!silent) { - printf("Decoded freqs %d (expected %d)\n", - dec_arfcns_count, arfcns_num); - printf("Decoded: "); - for (i = 0; i < dec_arfcns_count; i++) { - printf("%d ", dec_arfcns[i]); - if (dec_arfcns[i] != orig_arfcns[i]) - printf("(!= %d) ", orig_arfcns[i]); - } - printf("\n"); - } - - if (dec_arfcns_count != arfcns_num) { - printf("Wrong number of arfcns\n"); - return 1; - } - - if (memcmp(dec_arfcns, orig_arfcns, sizeof(dec_arfcns)) != 0) { - printf("Decoding error, got wrong freqs\n"); - fprintf(stderr, " w = "); - for (i = 0; i < ARRAY_SIZE(w); i++) - fprintf(stderr, "%d ", w[i]); - fprintf(stderr, "\n"); - return 1; - } - - return 0; -} - -static void test_random_range_encoding(int range, int max_arfcn_num) -{ - int arfcns_num = 0; - int test_idx; - int rc, max_count; - int num_tests = 1024; - - printf("Random range test: range %d, max num ARFCNs %d\n", - range, max_arfcn_num); - - srandom(1); - - for (max_count = 1; max_count < max_arfcn_num; max_count++) { - for (test_idx = 0; test_idx < num_tests; test_idx++) { - int count; - int i; - int min_freq = 0; - - int rnd_arfcns[RANGE_ENC_MAX_ARFCNS] = {0}; - char rnd_arfcns_set[1024] = {0}; - - if (range < ARFCN_RANGE_1024) - min_freq = random() % (1023 - range); - - for (count = max_count; count; ) { - int arfcn = min_freq + random() % (range + 1); - OSMO_ASSERT(arfcn < ARRAY_SIZE(rnd_arfcns_set)); - - if (!rnd_arfcns_set[arfcn]) { - rnd_arfcns_set[arfcn] = 1; - count -= 1; - } - } - - arfcns_num = 0; - for (i = 0; i < ARRAY_SIZE(rnd_arfcns_set); i++) - if (rnd_arfcns_set[i]) - rnd_arfcns[arfcns_num++] = i; - - rc = test_single_range_encoding(range, rnd_arfcns, - arfcns_num, 1); - if (rc != 0) { - printf("Failed on test %d, range %d, num ARFCNs %d\n", - test_idx, range, max_count); - test_single_range_encoding(range, rnd_arfcns, - arfcns_num, 0); - return; - } - } - } -} - -static void test_range_encoding() -{ - int *arfcns; - int arfcns_num = 0; - int test_idx; - int range; - - for (test_idx = 0; arfcn_test_ranges[test_idx].arfcns_num > 0; test_idx++) - { - arfcns_num = arfcn_test_ranges[test_idx].arfcns_num; - arfcns = &arfcn_test_ranges[test_idx].arfcns[0]; - range = arfcn_test_ranges[test_idx].range; - - printf("Range test %d: range %d, num ARFCNs %d\n", - test_idx, range, arfcns_num); - - test_single_range_encoding(range, arfcns, arfcns_num, 0); - } - - test_random_range_encoding(ARFCN_RANGE_128, 29); - test_random_range_encoding(ARFCN_RANGE_256, 22); - test_random_range_encoding(ARFCN_RANGE_512, 18); - test_random_range_encoding(ARFCN_RANGE_1024, 16); -} - -static int freqs1[] = { - 12, 70, 121, 190, 250, 320, 401, 475, 520, 574, 634, 700, 764, 830, 905, 980 -}; - -static int freqs2[] = { - 402, 460, 1, 67, 131, 197, 272, 347, -}; - -static int freqs3[] = { - 68, 128, 198, 279, 353, 398, 452, - -}; - -static int w_out[] = { - 122, 2, 69, 204, 75, 66, 60, 70, 83, 3, 24, 67, 54, 64, 70, 9, -}; - -static int range128[] = { - 1, 1 + 127, -}; - -static int range256[] = { - 1, 1 + 128, -}; - -static int range512[] = { - 1, 1+ 511, -}; - - -static void test_arfcn_filter() -{ - int arfcns[50], i, res, f0_included; - for (i = 0; i < ARRAY_SIZE(arfcns); ++i) - arfcns[i] = (i + 1) * 2; - - /* check that the arfcn is taken out. f0_included is only set for Range1024 */ - f0_included = 24; - res = range_enc_filter_arfcns(arfcns, ARRAY_SIZE(arfcns), - arfcns[0], &f0_included); - VERIFY(res, ==, ARRAY_SIZE(arfcns) - 1); - VERIFY(f0_included, ==, 1); - for (i = 0; i < res; ++i) - VERIFY(arfcns[i], ==, ((i+2) * 2) - (2+1)); - - /* check with range1024, ARFCN 0 is included */ - for (i = 0; i < ARRAY_SIZE(arfcns); ++i) - arfcns[i] = i * 2; - res = range_enc_filter_arfcns(arfcns, ARRAY_SIZE(arfcns), - 0, &f0_included); - VERIFY(res, ==, ARRAY_SIZE(arfcns) - 1); - VERIFY(f0_included, ==, 1); - for (i = 0; i < res; ++i) - VERIFY(arfcns[i], ==, (i + 1) * 2 - 1); - - /* check with range1024, ARFCN 0 not included */ - for (i = 0; i < ARRAY_SIZE(arfcns); ++i) - arfcns[i] = (i + 1) * 2; - res = range_enc_filter_arfcns(arfcns, ARRAY_SIZE(arfcns), - 0, &f0_included); - VERIFY(res, ==, ARRAY_SIZE(arfcns)); - VERIFY(f0_included, ==, 0); - for (i = 0; i < res; ++i) - VERIFY(arfcns[i], ==, ((i + 1) * 2) - 1); -} - -static void test_print_encoding() -{ - int rc; - int w[17]; - uint8_t chan_list[16]; - memset(chan_list, 0x23, sizeof(chan_list)); - - for (rc = 0; rc < ARRAY_SIZE(w); ++rc) - switch (rc % 3) { - case 0: - w[rc] = 0xAAAA; - break; - case 1: - w[rc] = 0x5555; - break; - case 2: - w[rc] = 0x9696; - break; - } - - range_enc_range512(chan_list, (1 << 9) | 0x96, w); - - printf("Range512: %s\n", osmo_hexdump(chan_list, ARRAY_SIZE(chan_list))); -} - -static void test_si_range_helpers() -{ - int ws[(sizeof(freqs1)/sizeof(freqs1[0]))]; - int i, f0 = 0xFFFFFF; - - memset(&ws[0], 0x23, sizeof(ws)); - - i = range_enc_find_index(1023, freqs1, ARRAY_SIZE(freqs1)); - printf("Element is: %d => freqs[i] = %d\n", i, i >= 0 ? freqs1[i] : -1); - VERIFY(i, ==, 2); - - i = range_enc_find_index(511, freqs2, ARRAY_SIZE(freqs2)); - printf("Element is: %d => freqs[i] = %d\n", i, i >= 0 ? freqs2[i] : -1); - VERIFY(i, ==, 2); - - i = range_enc_find_index(511, freqs3, ARRAY_SIZE(freqs3)); - printf("Element is: %d => freqs[i] = %d\n", i, i >= 0 ? freqs3[i] : -1); - VERIFY(i, ==, 0); - - range_enc_arfcns(1023, freqs1, ARRAY_SIZE(freqs1), ws, 0); - - for (i = 0; i < sizeof(freqs1)/sizeof(freqs1[0]); ++i) { - printf("w[%d]=%d\n", i, ws[i]); - VERIFY(ws[i], ==, w_out[i]); - } - - i = range_enc_determine_range(range128, ARRAY_SIZE(range128), &f0); - VERIFY(i, ==, ARFCN_RANGE_128); - VERIFY(f0, ==, 1); - - i = range_enc_determine_range(range256, ARRAY_SIZE(range256), &f0); - VERIFY(i, ==, ARFCN_RANGE_256); - VERIFY(f0, ==, 1); - - i = range_enc_determine_range(range512, ARRAY_SIZE(range512), &f0); - VERIFY(i, ==, ARFCN_RANGE_512); - VERIFY(f0, ==, 1); -} - -static void test_gsm411_rp_ref_wrap(void) -{ - struct gsm_subscriber_connection conn; - int res; - - printf("testing RP-Reference wrap\n"); - - memset(&conn, 0, sizeof(conn)); - conn.next_rp_ref = 255; - - res = sms_next_rp_msg_ref(&conn.next_rp_ref); - printf("Allocated reference: %d\n", res); - OSMO_ASSERT(res == 255); - - res = sms_next_rp_msg_ref(&conn.next_rp_ref); - printf("Allocated reference: %d\n", res); - OSMO_ASSERT(res == 0); - - res = sms_next_rp_msg_ref(&conn.next_rp_ref); - printf("Allocated reference: %d\n", res); - OSMO_ASSERT(res == 1); -} - -int main(int argc, char **argv) -{ - osmo_init_logging(&log_info); - log_set_log_level(osmo_stderr_target, LOGL_INFO); - - test_location_area_identifier(); - test_mi_functionality(); - - test_si_range_helpers(); - test_arfcn_filter(); - test_print_encoding(); - test_range_encoding(); - test_gsm411_rp_ref_wrap(); - - test_si2q_segfault(); - test_si2q_e(); - test_si2q_u(); - test_si2q_mu(); - test_si2q_long(); - - printf("Done.\n"); - - return EXIT_SUCCESS; -} diff --git a/tests/gsm0408/gsm0408_test.ok b/tests/gsm0408/gsm0408_test.ok deleted file mode 100644 index d30f42155..000000000 --- a/tests/gsm0408/gsm0408_test.ok +++ /dev/null @@ -1,204 +0,0 @@ -Testing test location area identifier -Testing parsing and generating TMSI/IMSI -hex: 17 08 99 78 56 34 12 90 78 36 -hex: 17 09 91 78 56 34 12 90 78 56 f4 -Element is: 2 => freqs[i] = 121 -Element is: 2 => freqs[i] = 1 -Element is: 0 => freqs[i] = 68 -w[0]=122 -w[1]=2 -w[2]=69 -w[3]=204 -w[4]=75 -w[5]=66 -w[6]=60 -w[7]=70 -w[8]=83 -w[9]=3 -w[10]=24 -w[11]=67 -w[12]=54 -w[13]=64 -w[14]=70 -w[15]=9 -Range512: 89 4b 2a 95 65 95 55 2c a9 55 aa 55 6a 95 59 55 -Range test 0: range 511, num ARFCNs 12 -chan_list = 88 00 98 34 85 36 7c 50 22 dc 5e ec 00 00 00 00 -Decoded freqs 12 (expected 12) -Decoded: 1 12 31 51 57 91 97 98 113 117 120 125 -Range test 1: range 511, num ARFCNs 17 -chan_list = 88 00 82 7f 01 3f 7e 04 0b ff ff fc 10 41 07 e0 -Decoded freqs 17 (expected 17) -Decoded: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 -Range test 2: range 511, num ARFCNs 18 -chan_list = 88 00 82 7f 01 7f 7e 04 0b ff ff fc 10 41 07 ff -Decoded freqs 18 (expected 18) -Decoded: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 -Range test 3: range 511, num ARFCNs 18 -chan_list = 88 00 94 3a 44 32 d7 2a 43 2a 13 94 e5 38 39 f6 -Decoded freqs 18 (expected 18) -Decoded: 1 17 31 45 58 79 81 97 113 127 213 277 287 311 331 391 417 511 -Range test 4: range 511, num ARFCNs 6 -chan_list = 88 00 8b 3c 88 b9 6b 00 00 00 00 00 00 00 00 00 -Decoded freqs 6 (expected 6) -Decoded: 1 17 31 45 58 79 -Range test 5: range 511, num ARFCNs 6 -chan_list = 88 05 08 fc 88 b9 6b 00 00 00 00 00 00 00 00 00 -Decoded freqs 6 (expected 6) -Decoded: 10 17 31 45 58 79 -Range test 6: range 1023, num ARFCNs 17 -chan_list = 84 71 e4 ab b9 58 05 cb 39 17 fd b0 75 62 0f 2f -Decoded freqs 17 (expected 17) -Decoded: 0 17 31 45 58 79 81 97 113 127 213 277 287 311 331 391 1023 -Range test 7: range 1023, num ARFCNs 16 -chan_list = 80 71 e4 ab b9 58 05 cb 39 17 fd b0 75 62 0f 2f -Decoded freqs 16 (expected 16) -Decoded: 17 31 45 58 79 81 97 113 127 213 277 287 311 331 391 1023 -Random range test: range 127, max num ARFCNs 29 -Random range test: range 255, max num ARFCNs 22 -Random range test: range 511, max num ARFCNs 18 -Random range test: range 1023, max num ARFCNs 16 -testing RP-Reference wrap -Allocated reference: 255 -Allocated reference: 0 -Allocated reference: 1 -Test SI2quater UARFCN (same scrambling code and diversity): -generating SI2quater for 0 EARFCNs and 1 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 88 0a 7e 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 2 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 0a 7f 52 88 0a 7e 0b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 2 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 0a 7f 52 88 0a 7e 0b 2b 2b 2b 2b 2b 2b 2b 2b -Testing SYSINFO_TYPE_2quater EARFCN generation: -generating SI2quater for 0 EARFCNs and 0 UARFCNs... -generated invalid SI2quater [00/00]: [23] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -added EARFCN 1917 - generating SI2quater for 1 EARFCNs and 0 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be e8 50 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -removed EARFCN 1917 - generating SI2quater for 0 EARFCNs and 0 UARFCNs... -generated invalid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be e8 50 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -added EARFCN 1917 - generating SI2quater for 1 EARFCNs and 0 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be c8 50 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -added EARFCN 1932 - generating SI2quater for 2 EARFCNs and 0 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be cc 1e 30 14 03 2b 2b 2b 2b 2b 2b 2b 2b -added EARFCN 1937 - generating SI2quater for 3 EARFCNs and 0 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be cc 1e 31 07 91 a0 a0 2b 2b 2b 2b 2b 2b -added EARFCN 1945 - generating SI2quater for 4 EARFCNs and 0 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be cc 1e 31 07 91 a8 3c c8 28 0b 2b 2b 2b -added EARFCN 1965 - generating SI2quater for 5 EARFCNs and 0 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be cc 1e 31 07 91 a8 3c ca 0f 5a 0a 03 2b -added EARFCN 1967 - generating SI2quater for 6 EARFCNs and 0 UARFCNs... -generated valid SI2quater [00/01]: [23] 59 06 07 c0 20 04 86 59 83 be cc 1e 31 07 91 a8 3c ca 0f 5a 0a 03 2b -generated valid SI2quater [01/01]: [23] 59 06 07 c2 20 04 86 59 83 d7 e0 50 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -added EARFCN 1982 - generating SI2quater for 7 EARFCNs and 0 UARFCNs... -generated valid SI2quater [00/01]: [23] 59 06 07 c0 20 04 86 59 83 be cc 1e 31 07 91 a8 3c ca 0f 5a 0a 03 2b -generated valid SI2quater [01/01]: [23] 59 06 07 c2 20 04 86 59 83 d7 e4 1e fa c2 80 2b 2b 2b 2b 2b 2b 2b 2b -Testing SYSINFO_TYPE_2quater UARFCN generation: -generating SI2quater for 0 EARFCNs and 0 UARFCNs... -generated invalid SI2quater [00/00]: [23] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -generating SI2quater for 0 EARFCNs and 1 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 0c 1a 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 2 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 14 1a 1f 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 3 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 18 58 12 f0 83 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 4 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 20 58 2e f0 f2 03 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 5 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 28 58 2e 22 f2 4e 83 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 6 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 34 1a 64 26 5d f2 05 03 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 7 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 38 58 12 22 fd ce 8e 05 03 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 8 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 40 58 1d 22 fa ce 88 85 7b 0b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 9 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 4c 7a 34 0e 64 77 85 43 55 c8 0b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 10 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 50 1c 3b 31 fa dd 88 85 7b c4 1c 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 11 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 58 1c 3b 25 7a ea 08 91 fb c4 1f b0 2b 2b 2b -Test SI2quater multiple UARFCNs: -generating SI2quater for 0 EARFCNs and 1 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 88 0a 7c 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 2 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 0a 7f 52 88 0a 7c 0b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 3 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 12 7e e0 a9 44 05 3e 0b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 4 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 18 3f f4 90 54 a2 02 9f 03 2b 2b 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 5 UARFCNs... -generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 ea 08 81 52 e8 18 3f f4 90 54 a2 02 9f 03 2b 2b -generating SI2quater for 0 EARFCNs and 6 UARFCNs... -generated valid SI2quater [00/01]: [23] 59 06 07 c0 20 25 52 ea 08 81 52 e8 10 3f f4 a9 75 04 a4 0b 2b 2b 2b -generated valid SI2quater [01/01]: [23] 59 06 07 c2 20 25 52 e8 28 81 df 7f fa 32 d4 a2 02 9f 03 2b 2b 2b 2b -generating SI2quater for 0 EARFCNs and 7 UARFCNs... -generated valid SI2quater [00/01]: [23] 59 06 07 c0 20 25 52 ea 10 81 ce a9 74 08 1f fa 54 ba 82 52 03 2b 2b -generated valid SI2quater [01/01]: [23] 59 06 07 c2 20 25 52 e8 30 81 d3 7f fd b2 86 54 a2 02 9f 03 2b 2b 2b -Testing SYSINFO_TYPE_2quater combined EARFCN & UARFCN generation: -generating SI2quater for 17 EARFCNs and 1 UARFCNs... -generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 0c 1a 10 99 66 0f 04 83 c1 1c bb 2b 03 2b 2b -generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c2 6c 1e 0f 60 f0 bb 08 3f d7 2e ca c1 2b -generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 20 64 21 06 e1 08 55 08 53 d7 2e ca c1 2b -generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 2a 64 21 56 e1 0a d5 08 49 d7 2e ca c1 2b -generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 25 64 21 2e e1 09 94 e5 d9 58 2b 2b 2b 2b -generating SI2quater for 17 EARFCNs and 2 UARFCNs... -generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 14 4d e7 00 44 b3 07 82 41 e0 8e 5d 95 83 2b -generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c2 6c 1e 0f 60 f0 bb 08 3f d7 2e ca c1 2b -generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 20 64 21 06 e1 08 55 08 53 d7 2e ca c1 2b -generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 2a 64 21 56 e1 0a d5 08 49 d7 2e ca c1 2b -generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 25 64 21 2e e1 09 94 e5 d9 58 2b 2b 2b 2b -generating SI2quater for 17 EARFCNs and 3 UARFCNs... -generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 1c 4d e7 03 04 86 59 83 c1 20 f0 47 2e ca c1 -generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c2 6c 1e 0f 60 f0 bb 08 3f d7 2e ca c1 2b -generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 20 64 21 06 e1 08 55 08 53 d7 2e ca c1 2b -generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 2a 64 21 56 e1 0a d5 08 49 d7 2e ca c1 2b -generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 25 64 21 2e e1 09 94 e5 d9 58 2b 2b 2b 2b -generating SI2quater for 17 EARFCNs and 4 UARFCNs... -generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 24 59 fa 26 73 84 86 59 83 c1 1c bb 2b 03 2b -generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c1 20 f0 9b 07 83 d8 3c 2e b9 76 56 0b 2b -generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 1f ec 21 03 21 08 37 08 42 a7 2e ca c1 2b -generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 29 ec 21 53 21 0a b7 08 56 a7 2e ca c1 2b -generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 24 ec 21 2b 21 09 77 08 4c a7 2e ca c1 2b -generating SI2quater for 17 EARFCNs and 5 UARFCNs... -generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 2c 59 fa 30 73 f6 04 86 59 83 c1 1c bb 2b 03 -generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c1 20 f0 9b 07 83 d8 3c 2e b9 76 56 0b 2b -generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 1f ec 21 03 21 08 37 08 42 a7 2e ca c1 2b -generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 29 ec 21 53 21 0a b7 08 56 a7 2e ca c1 2b -generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 24 ec 21 2b 21 09 77 08 4c a7 2e ca c1 2b -generating SI2quater for 17 EARFCNs and 6 UARFCNs... -generated valid SI2quater [00/05]: [23] 59 06 07 c0 a0 25 0f 70 34 f1 ae 15 f3 f4 83 04 86 59 72 ec ac 0b 2b -generated valid SI2quater [01/05]: [23] 59 06 07 c2 a0 04 86 59 83 c1 20 f0 48 3c 26 c1 e0 f5 cb b2 b0 2b 2b -generated valid SI2quater [02/05]: [23] 59 06 07 c4 a0 04 86 59 83 c2 ec 20 ff 61 08 19 08 41 b7 2e ca c1 2b -generated valid SI2quater [03/05]: [23] 59 06 07 c6 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b -generated valid SI2quater [04/05]: [23] 59 06 07 c8 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b -generated valid SI2quater [05/05]: [23] 59 06 07 ca a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 17 EARFCNs and 7 UARFCNs... -generated valid SI2quater [00/05]: [23] 59 06 07 c0 a0 25 0f 70 3c f1 ae 15 f3 f4 83 01 84 86 59 72 ec ac 0b -generated valid SI2quater [01/05]: [23] 59 06 07 c2 a0 04 86 59 83 c1 20 f0 48 3c 26 c1 e0 f5 cb b2 b0 2b 2b -generated valid SI2quater [02/05]: [23] 59 06 07 c4 a0 04 86 59 83 c2 ec 20 ff 61 08 19 08 41 b7 2e ca c1 2b -generated valid SI2quater [03/05]: [23] 59 06 07 c6 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b -generated valid SI2quater [04/05]: [23] 59 06 07 c8 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b -generated valid SI2quater [05/05]: [23] 59 06 07 ca a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 17 EARFCNs and 8 UARFCNs... -generated valid SI2quater [00/02]: [23] 59 06 07 c0 40 25 0f 70 45 19 a0 0d 7d 7e a6 19 e7 00 44 b3 07 82 41 -generated valid SI2quater [01/02]: [23] 59 06 07 c2 40 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b -generated valid SI2quater [02/02]: [23] 59 06 07 c4 40 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 17 EARFCNs and 9 UARFCNs... -generated valid SI2quater [00/02]: [23] 59 06 07 c0 40 25 0f 70 4d 19 a0 26 fd 66 a6 03 e7 fa 10 99 66 0f 04 -generated valid SI2quater [01/02]: [23] 59 06 07 c2 40 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b -generated valid SI2quater [02/02]: [23] 59 06 07 c4 40 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 17 EARFCNs and 10 UARFCNs... -generated valid SI2quater [00/05]: [23] 59 06 07 c0 a0 25 0f 70 55 47 89 1e fd 7c b0 00 e7 9b b0 04 12 c8 2b -generated valid SI2quater [01/05]: [23] 59 06 07 c2 a0 04 86 59 83 c1 20 f0 48 3c 26 c1 e0 f5 cb b2 b0 2b 2b -generated valid SI2quater [02/05]: [23] 59 06 07 c4 a0 04 86 59 83 c2 ec 20 ff 61 08 19 08 41 b7 2e ca c1 2b -generated valid SI2quater [03/05]: [23] 59 06 07 c6 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b -generated valid SI2quater [04/05]: [23] 59 06 07 c8 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b -generated valid SI2quater [05/05]: [23] 59 06 07 ca a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b -generating SI2quater for 17 EARFCNs and 11 UARFCNs... -generated valid SI2quater [00/05]: [23] 59 06 07 c0 a0 25 0f 70 5d 47 89 1e fd 7c b0 01 67 9b b3 f8 2b 2b 2b -generated valid SI2quater [01/05]: [23] 59 06 07 c2 a0 04 86 59 83 c1 20 f0 48 3c 26 c1 e0 f5 cb b2 b0 2b 2b -generated valid SI2quater [02/05]: [23] 59 06 07 c4 a0 04 86 59 83 c2 ec 20 ff 61 08 19 08 41 b7 2e ca c1 2b -generated valid SI2quater [03/05]: [23] 59 06 07 c6 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b -generated valid SI2quater [04/05]: [23] 59 06 07 c8 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b -generated valid SI2quater [05/05]: [23] 59 06 07 ca a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b -Done. diff --git a/tests/mgcp/Makefile.am b/tests/mgcp/Makefile.am deleted file mode 100644 index 31d8a51f8..000000000 --- a/tests/mgcp/Makefile.am +++ /dev/null @@ -1,92 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - -I$(top_srcdir) \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_FLAGS) \ - $(LIBOSMONETIF_CFLAGS) \ - $(LIBOSMOSCCP_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(LIBBCG729_CFLAGS) \ - $(NULL) - -AM_LDFLAGS = \ - $(COVERAGE_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - mgcp_test.ok \ - mgcp_transcoding_test.ok \ - mgcpgw_client_test.ok \ - $(NULL) - -noinst_PROGRAMS = \ - mgcp_test \ - mgcpgw_client_test \ - $(NULL) -if BUILD_MGCP_TRANSCODING -noinst_PROGRAMS += \ - mgcp_transcoding_test \ - $(NULL) -endif - -mgcp_test_SOURCES = \ - mgcp_test.c \ - $(NULL) - -mgcp_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libmgcp/libmgcp.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOSCCP_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBRARY_DL) \ - $(LIBOSMONETIF_LIBS) \ - -lrt \ - -lm \ - $(NULL) - -mgcp_transcoding_test_SOURCES = \ - mgcp_transcoding_test.c \ - $(NULL) - -mgcp_transcoding_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libmgcp/libmgcp.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBBCG729_LIBS) \ - $(LIBOSMOSCCP_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBRARY_DL) \ - $(LIBOSMONETIF_LIBS) \ - $(LIBRARY_GSM) \ - -lrt \ - -lm \ - $(NULL) - -mgcpgw_client_test_SOURCES = \ - mgcpgw_client_test.c \ - $(NULL) - -mgcpgw_client_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libmgcp/libmgcp.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOSCCP_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBRARY_DL) \ - $(LIBOSMONETIF_LIBS) \ - -lrt \ - -lm \ - $(NULL) diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c deleted file mode 100644 index 43a453af8..000000000 --- a/tests/mgcp/mgcp_test.c +++ /dev/null @@ -1,1227 +0,0 @@ -/* - * (C) 2011-2012,2014 by Holger Hans Peter Freyther - * (C) 2011-2012,2014 by On-Waves - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -#undef _GNU_SOURCE -#define _GNU_SOURCE - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -char *strline_r(char *str, char **saveptr); - -const char *strline_test_data = - "one CR\r" - "two CR\r" - "\r" - "one CRLF\r\n" - "two CRLF\r\n" - "\r\n" - "one LF\n" - "two LF\n" - "\n" - "mixed (4 lines)\r\r\n\n\r\n"; - -#define EXPECTED_NUMBER_OF_LINES 13 - -static void test_strline(void) -{ - char *save = NULL; - char *line; - char buf[2048]; - int counter = 0; - - osmo_strlcpy(buf, strline_test_data, sizeof(buf)); - - for (line = strline_r(buf, &save); line; - line = strline_r(NULL, &save)) { - printf("line: '%s'\n", line); - counter++; - } - - OSMO_ASSERT(counter == EXPECTED_NUMBER_OF_LINES); -} - -#define AUEP1 "AUEP 158663169 ds/e1-1/2@172.16.6.66 MGCP 1.0\r\n" -#define AUEP1_RET "200 158663169 OK\r\n" -#define AUEP2 "AUEP 18983213 ds/e1-2/1@172.16.6.66 MGCP 1.0\r\n" -#define AUEP2_RET "500 18983213 FAIL\r\n" -#define EMPTY "\r\n" -#define EMPTY_RET NULL -#define SHORT "CRCX \r\n" -#define SHORT_RET "510 000000 FAIL\r\n" - -#define MDCX_WRONG_EP "MDCX 18983213 ds/e1-3/1@172.16.6.66 MGCP 1.0\r\n" -#define MDCX_ERR_RET "510 18983213 FAIL\r\n" -#define MDCX_UNALLOCATED "MDCX 18983214 ds/e1-1/2@172.16.6.66 MGCP 1.0\r\n" -#define MDCX_RET "400 18983214 FAIL\r\n" -#define MDCX3 "MDCX 18983215 1@mgw MGCP 1.0\r\n" -#define MDCX3_RET "200 18983215 OK\r\n" \ - "I: 1\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "s=-\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 0 RTP/AVP 126\r\n" \ - "a=rtpmap:126 AMR/8000\r\n" \ - "a=ptime:20\r\n" -#define MDCX3_FMTP_RET "200 18983215 OK\r\n" \ - "I: 3\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 3 23 IN IP4 0.0.0.0\r\n" \ - "s=-\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 0 RTP/AVP 126\r\n" \ - "a=rtpmap:126 AMR/8000\r\n" \ - "a=fmtp:126 0/1/2\r\n" \ - "a=ptime:20\r\n" -#define MDCX4 "MDCX 18983216 1@mgw MGCP 1.0\r\n" \ - "M: sendrecv\r" \ - "C: 2\r\n" \ - "I: 1\r\n" \ - "L: p:20, a:AMR, nt:IN\r\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 4441 RTP/AVP 99\r\n" \ - "a=rtpmap:99 AMR/8000\r\n" \ - "a=ptime:40\r\n" -#define MDCX4_RET(Ident) "200 " Ident " OK\r\n" \ - "I: 1\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "s=-\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 0 RTP/AVP 126\r\n" \ - "a=rtpmap:126 AMR/8000\r\n" \ - "a=ptime:20\r\n" - -#define MDCX4_PT1 "MDCX 18983217 1@mgw MGCP 1.0\r\n" \ - "M: sendrecv\r" \ - "C: 2\r\n" \ - "I: 1\r\n" \ - "L: p:20-40, a:AMR, nt:IN\r\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 4441 RTP/AVP 99\r\n" \ - "a=rtpmap:99 AMR/8000\r\n" \ - "a=ptime:40\r\n" - -#define MDCX4_PT2 "MDCX 18983218 1@mgw MGCP 1.0\r\n" \ - "M: sendrecv\r" \ - "C: 2\r\n" \ - "I: 1\r\n" \ - "L: p:20-20, a:AMR, nt:IN\r\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 4441 RTP/AVP 99\r\n" \ - "a=rtpmap:99 AMR/8000\r\n" \ - "a=ptime:40\r\n" - -#define MDCX4_PT3 "MDCX 18983219 1@mgw MGCP 1.0\r\n" \ - "M: sendrecv\r" \ - "C: 2\r\n" \ - "I: 1\r\n" \ - "L: a:AMR, nt:IN\r\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 4441 RTP/AVP 99\r\n" \ - "a=rtpmap:99 AMR/8000\r\n" \ - "a=ptime:40\r\n" - -#define MDCX4_SO "MDCX 18983220 1@mgw MGCP 1.0\r\n" \ - "M: sendonly\r" \ - "C: 2\r\n" \ - "I: 1\r\n" \ - "L: p:20, a:AMR, nt:IN\r\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 4441 RTP/AVP 99\r\n" \ - "a=rtpmap:99 AMR/8000\r\n" \ - "a=ptime:40\r\n" - -#define MDCX4_RO "MDCX 18983221 1@mgw MGCP 1.0\r\n" \ - "M: recvonly\r" \ - "C: 2\r\n" \ - "I: 1\r\n" \ - "L: p:20, a:AMR, nt:IN\r\n" - -#define SHORT2 "CRCX 1" -#define SHORT2_RET "510 000000 FAIL\r\n" -#define SHORT3 "CRCX 1 1@mgw" -#define SHORT4 "CRCX 1 1@mgw MGCP" -#define SHORT5 "CRCX 1 1@mgw MGCP 1.0" - -#define CRCX "CRCX 2 1@mgw MGCP 1.0\r\n" \ - "M: recvonly\r\n" \ - "C: 2\r\n" \ - "X\r\n" \ - "L: p:20\r\n" \ - "\r\n" \ - "v=0\r\n" \ - "c=IN IP4 123.12.12.123\r\n" \ - "m=audio 5904 RTP/AVP 97\r\n" \ - "a=rtpmap:97 GSM-EFR/8000\r\n" \ - "a=ptime:40\r\n" - -#define CRCX_RET "200 2 OK\r\n" \ - "I: 1\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "s=-\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 0 RTP/AVP 126\r\n" \ - "a=rtpmap:126 AMR/8000\r\n" \ - "a=ptime:20\r\n" - -#define CRCX_RET_NO_RTPMAP "200 2 OK\r\n" \ - "I: 1\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 1 23 IN IP4 0.0.0.0\r\n" \ - "s=-\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 0 RTP/AVP 126\r\n" \ - "a=ptime:20\r\n" - -#define CRCX_FMTP_RET "200 2 OK\r\n" \ - "I: 3\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 3 23 IN IP4 0.0.0.0\r\n" \ - "s=-\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 0 RTP/AVP 126\r\n" \ - "a=rtpmap:126 AMR/8000\r\n" \ - "a=fmtp:126 0/1/2\r\n" \ - "a=ptime:20\r\n" - -#define CRCX_ZYN "CRCX 2 1@mgw MGCP 1.0\r" \ - "M: recvonly\r" \ - "C: 2\r\r" \ - "v=0\r" \ - "c=IN IP4 123.12.12.123\r" \ - "m=audio 5904 RTP/AVP 97\r" \ - "a=rtpmap:97 GSM-EFR/8000\r" - -#define CRCX_ZYN_RET "200 2 OK\r\n" \ - "I: 2\n" \ - "\n" \ - "v=0\r\n" \ - "o=- 2 23 IN IP4 0.0.0.0\r\n" \ - "s=-\r\n" \ - "c=IN IP4 0.0.0.0\r\n" \ - "t=0 0\r\n" \ - "m=audio 0 RTP/AVP 126\r\n" \ - "a=rtpmap:126 AMR/8000\r\n" \ - "a=ptime:20\r\n" - -#define DLCX "DLCX 7 1@mgw MGCP 1.0\r\n" \ - "C: 2\r\n" - -#define DLCX_RET "250 7 OK\r\n" \ - "P: PS=0, OS=0, PR=0, OR=0, PL=0, JI=0\r\n" \ - "X-Osmo-CP: EC TIS=0, TOS=0, TIR=0, TOR=0\r\n" - -#define RQNT "RQNT 186908780 1@mgw MGCP 1.0\r\n" \ - "X: B244F267488\r\n" \ - "S: D/9\r\n" - -#define RQNT2 "RQNT 186908781 1@mgw MGCP 1.0\r\n" \ - "X: ADD4F26746F\r\n" \ - "R: D/[0-9#*](N), G/ft, fxr/t38\r\n" - -#define RQNT1_RET "200 186908780 OK\r\n" -#define RQNT2_RET "200 186908781 OK\r\n" - -#define PTYPE_IGNORE 0 /* == default initializer */ -#define PTYPE_NONE 128 -#define PTYPE_NYI PTYPE_NONE - -#define CRCX_MULT_1 "CRCX 2 1@mgw MGCP 1.0\r\n" \ - "M: recvonly\r\n" \ - "C: 2\r\n" \ - "X\r\n" \ - "L: p:20\r\n" \ - "\r\n" \ - "v=0\r\n" \ - "c=IN IP4 123.12.12.123\r\n" \ - "m=audio 5904 RTP/AVP 18 97\r\n"\ - "a=rtpmap:18 G729/8000\r\n" \ - "a=rtpmap:97 GSM-EFR/8000\r\n" \ - "a=ptime:40\r\n" - -#define CRCX_MULT_2 "CRCX 2 2@mgw MGCP 1.0\r\n" \ - "M: recvonly\r\n" \ - "C: 2\r\n" \ - "X\r\n" \ - "L: p:20\r\n" \ - "\r\n" \ - "v=0\r\n" \ - "c=IN IP4 123.12.12.123\r\n" \ - "m=audio 5904 RTP/AVP 18 97 101\r\n"\ - "a=rtpmap:18 G729/8000\r\n" \ - "a=rtpmap:97 GSM-EFR/8000\r\n" \ - "a=rtpmap:101 FOO/8000\r\n" \ - "a=ptime:40\r\n" - -#define CRCX_MULT_3 "CRCX 2 3@mgw MGCP 1.0\r\n" \ - "M: recvonly\r\n" \ - "C: 2\r\n" \ - "X\r\n" \ - "L: p:20\r\n" \ - "\r\n" \ - "v=0\r\n" \ - "c=IN IP4 123.12.12.123\r\n" \ - "m=audio 5904 RTP/AVP\r\n" \ - "a=rtpmap:18 G729/8000\r\n" \ - "a=rtpmap:97 GSM-EFR/8000\r\n" \ - "a=rtpmap:101 FOO/8000\r\n" \ - "a=ptime:40\r\n" - -#define CRCX_MULT_4 "CRCX 2 4@mgw MGCP 1.0\r\n" \ - "M: recvonly\r\n" \ - "C: 2\r\n" \ - "X\r\n" \ - "L: p:20\r\n" \ - "\r\n" \ - "v=0\r\n" \ - "c=IN IP4 123.12.12.123\r\n" \ - "m=audio 5904 RTP/AVP 18\r\n" \ - "a=rtpmap:18 G729/8000\r\n" \ - "a=rtpmap:97 GSM-EFR/8000\r\n" \ - "a=rtpmap:101 FOO/8000\r\n" \ - "a=ptime:40\r\n" - -#define CRCX_MULT_GSM_EXACT \ - "CRCX 259260421 5@mgw MGCP 1.0\r\n" \ - "C: 1355c6041e\r\n" \ - "I: 3\r\n" \ - "L: p:20, a:GSM, nt:IN\r\n" \ - "M: recvonly\r\n" \ - "\r\n" \ - "v=0\r\n" \ - "o=- 1439038275 1439038275 IN IP4 192.168.181.247\r\n" \ - "s=-\r\nc=IN IP4 192.168.181.247\r\n" \ - "t=0 0\r\nm=audio 29084 RTP/AVP 255 0 8 3 18 4 96 97 101\r\n" \ - "a=rtpmap:0 PCMU/8000\r\n" \ - "a=rtpmap:8 PCMA/8000\r\n" \ - "a=rtpmap:3 gsm/8000\r\n" \ - "a=rtpmap:18 G729/8000\r\n" \ - "a=fmtp:18 annexb=no\r\n" \ - "a=rtpmap:4 G723/8000\r\n" \ - "a=rtpmap:96 iLBC/8000\r\n" \ - "a=fmtp:96 mode=20\r\n" \ - "a=rtpmap:97 iLBC/8000\r\n" \ - "a=fmtp:97 mode=30\r\n" \ - "a=rtpmap:101 telephone-event/8000\r\n" \ - "a=fmtp:101 0-15\r\n" \ - "a=recvonly\r\n" -#define MDCX_NAT_DUMMY \ - "MDCX 23 5@mgw MGCP 1.0\r\n" \ - "C: 1355c6041e\r\n" \ - "\r\n" \ - "c=IN IP4 8.8.8.8\r\n" \ - "m=audio 16434 RTP/AVP 255\r\n" - - -struct mgcp_test { - const char *name; - const char *req; - const char *exp_resp; - int exp_net_ptype; - int exp_bts_ptype; - - const char *extra_fmtp; -}; - -static const struct mgcp_test tests[] = { - { "AUEP1", AUEP1, AUEP1_RET }, - { "AUEP2", AUEP2, AUEP2_RET }, - { "MDCX1", MDCX_WRONG_EP, MDCX_ERR_RET }, - { "MDCX2", MDCX_UNALLOCATED, MDCX_RET }, - { "CRCX", CRCX, CRCX_RET, 97, 126 }, - { "MDCX3", MDCX3, MDCX3_RET, PTYPE_NONE, 126 }, - { "MDCX4", MDCX4, MDCX4_RET("18983216"), 99, 126 }, - { "MDCX4_PT1", MDCX4_PT1, MDCX4_RET("18983217"), 99, 126 }, - { "MDCX4_PT2", MDCX4_PT2, MDCX4_RET("18983218"), 99, 126 }, - { "MDCX4_PT3", MDCX4_PT3, MDCX4_RET("18983219"), 99, 126 }, - { "MDCX4_SO", MDCX4_SO, MDCX4_RET("18983220"), 99, 126 }, - { "MDCX4_RO", MDCX4_RO, MDCX4_RET("18983221"), PTYPE_IGNORE, 126 }, - { "DLCX", DLCX, DLCX_RET, -1, -1 }, - { "CRCX_ZYN", CRCX_ZYN, CRCX_ZYN_RET, 97, 126 }, - { "EMPTY", EMPTY, EMPTY_RET }, - { "SHORT1", SHORT, SHORT_RET }, - { "SHORT2", SHORT2, SHORT2_RET }, - { "SHORT3", SHORT3, SHORT2_RET }, - { "SHORT4", SHORT4, SHORT2_RET }, - { "RQNT1", RQNT, RQNT1_RET }, - { "RQNT2", RQNT2, RQNT2_RET }, - { "DLCX", DLCX, DLCX_RET, -1, -1 }, - { "CRCX", CRCX, CRCX_FMTP_RET, 97, 126, .extra_fmtp = "a=fmtp:126 0/1/2" }, - { "MDCX3", MDCX3, MDCX3_FMTP_RET, PTYPE_NONE, 126 , .extra_fmtp = "a=fmtp:126 0/1/2" }, - { "DLCX", DLCX, DLCX_RET, -1, -1 , .extra_fmtp = "a=fmtp:126 0/1/2" }, -}; - -static const struct mgcp_test retransmit[] = { - { "CRCX", CRCX, CRCX_RET }, - { "RQNT1", RQNT, RQNT1_RET }, - { "RQNT2", RQNT2, RQNT2_RET }, - { "MDCX3", MDCX3, MDCX3_RET }, - { "DLCX", DLCX, DLCX_RET }, -}; - -static struct msgb *create_msg(const char *str) -{ - struct msgb *msg; - - msg = msgb_alloc_headroom(4096, 128, "MGCP msg"); - int len = sprintf((char *)msg->data, "%s", str); - msg->l2h = msgb_put(msg, len); - return msg; -} - -static int last_endpoint = -1; - -static int mgcp_test_policy_cb(struct mgcp_trunk_config *cfg, int endpoint, - int state, const char *transactio_id) -{ - fprintf(stderr, "Policy CB got state %d on endpoint %d\n", - state, endpoint); - last_endpoint = endpoint; - return MGCP_POLICY_CONT; -} - -#define MGCP_DUMMY_LOAD 0x23 -static int dummy_packets = 0; -/* override and forward */ -ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, - const struct sockaddr *dest_addr, socklen_t addrlen) -{ - typedef ssize_t (*sendto_t)(int, const void *, size_t, int, - const struct sockaddr *, socklen_t); - static sendto_t real_sendto = NULL; - uint32_t dest_host = htonl(((struct sockaddr_in *)dest_addr)->sin_addr.s_addr); - int dest_port = htons(((struct sockaddr_in *)dest_addr)->sin_port); - - if (!real_sendto) - real_sendto = dlsym(RTLD_NEXT, "sendto"); - - if (len == 1 && ((const char *)buf)[0] == MGCP_DUMMY_LOAD ) { - fprintf(stderr, "Dummy packet to 0x%08x:%d, msg length %zu\n%s\n\n", - dest_host, dest_port, - len, osmo_hexdump(buf, len)); - dummy_packets += 1; - } - - return real_sendto(sockfd, buf, len, flags, dest_addr, addrlen); -} - -static int64_t force_monotonic_time_us = -1; -/* override and forward */ -int clock_gettime(clockid_t clk_id, struct timespec *tp) -{ - typedef int (*clock_gettime_t)(clockid_t clk_id, struct timespec *tp); - static clock_gettime_t real_clock_gettime = NULL; - - if (!real_clock_gettime) - real_clock_gettime = dlsym(RTLD_NEXT, "clock_gettime"); - - if (clk_id == CLOCK_MONOTONIC && force_monotonic_time_us >= 0) { - tp->tv_sec = force_monotonic_time_us / 1000000; - tp->tv_nsec = (force_monotonic_time_us % 1000000) * 1000; - return 0; - } - - return real_clock_gettime(clk_id, tp); -} - -#define CONN_UNMODIFIED (0x1000) - -static void test_values(void) -{ - /* Check that NONE disables all output */ - OSMO_ASSERT((MGCP_CONN_NONE & MGCP_CONN_RECV_SEND) == 0) - - /* Check that LOOPBACK enables all output */ - OSMO_ASSERT((MGCP_CONN_LOOPBACK & MGCP_CONN_RECV_SEND) == - MGCP_CONN_RECV_SEND) -} - - -static void test_messages(void) -{ - struct mgcp_config *cfg; - struct mgcp_endpoint *endp; - int i; - - cfg = mgcp_config_alloc(); - - cfg->trunk.number_endpoints = 64; - mgcp_endpoints_allocate(&cfg->trunk); - - cfg->policy_cb = mgcp_test_policy_cb; - - mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1)); - - /* reset endpoints */ - for (i = 0; i < cfg->trunk.number_endpoints; i++) { - endp = &cfg->trunk.endpoints[i]; - endp->net_end.codec.payload_type = PTYPE_NONE; - endp->net_end.packet_duration_ms = -1; - - OSMO_ASSERT(endp->conn_mode == MGCP_CONN_NONE); - endp->conn_mode |= CONN_UNMODIFIED; - } - - for (i = 0; i < ARRAY_SIZE(tests); i++) { - const struct mgcp_test *t = &tests[i]; - struct msgb *inp; - struct msgb *msg; - - printf("Testing %s\n", t->name); - - last_endpoint = -1; - dummy_packets = 0; - - osmo_talloc_replace_string(cfg, &cfg->trunk.audio_fmtp_extra, t->extra_fmtp); - - inp = create_msg(t->req); - msg = mgcp_handle_message(cfg, inp); - msgb_free(inp); - if (!t->exp_resp) { - if (msg) - printf("%s failed '%s'\n", t->name, (char *) msg->data); - } else if (strcmp((char *) msg->data, t->exp_resp) != 0) - printf("%s failed '%s'\n", t->name, (char *) msg->data); - msgb_free(msg); - - if (dummy_packets) - printf("Dummy packets: %d\n", dummy_packets); - - if (last_endpoint != -1) { - endp = &cfg->trunk.endpoints[last_endpoint]; - - if (endp->net_end.packet_duration_ms != -1) - printf("Detected packet duration: %d\n", - endp->net_end.packet_duration_ms); - else - printf("Packet duration not set\n"); - if (endp->local_options.pkt_period_min || - endp->local_options.pkt_period_max) - printf("Requested packetetization period: " - "%d-%d\n", - endp->local_options.pkt_period_min, - endp->local_options.pkt_period_max); - else - printf("Requested packetization period not set\n"); - - if ((endp->conn_mode & CONN_UNMODIFIED) == 0) { - printf("Connection mode: %d:%s%s%s%s\n", - endp->conn_mode, - !endp->conn_mode ? " NONE" : "", - endp->conn_mode & MGCP_CONN_SEND_ONLY ? - " SEND" : "", - endp->conn_mode & MGCP_CONN_RECV_ONLY ? - " RECV" : "", - endp->conn_mode & MGCP_CONN_LOOPBACK & - ~MGCP_CONN_RECV_SEND ? - " LOOP" : ""); - fprintf(stderr, - "BTS output %sabled, NET output %sabled\n", - endp->bts_end.output_enabled ? "en" : "dis", - endp->net_end.output_enabled ? "en" : "dis"); - } else - printf("Connection mode not set\n"); - - OSMO_ASSERT(endp->net_end.output_enabled == - (endp->conn_mode & MGCP_CONN_SEND_ONLY ? 1 : 0)); - OSMO_ASSERT(endp->bts_end.output_enabled == - (endp->conn_mode & MGCP_CONN_RECV_ONLY ? 1 : 0)); - - endp->net_end.packet_duration_ms = -1; - endp->local_options.pkt_period_min = 0; - endp->local_options.pkt_period_max = 0; - endp->conn_mode |= CONN_UNMODIFIED; - } - - - /* Check detected payload type */ - if (t->exp_net_ptype != PTYPE_IGNORE || - t->exp_bts_ptype != PTYPE_IGNORE) { - OSMO_ASSERT(last_endpoint != -1); - endp = &cfg->trunk.endpoints[last_endpoint]; - - fprintf(stderr, "endpoint %d: " - "payload type BTS %d (exp %d), NET %d (exp %d)\n", - last_endpoint, - endp->bts_end.codec.payload_type, t->exp_bts_ptype, - endp->net_end.codec.payload_type, t->exp_net_ptype); - - if (t->exp_bts_ptype != PTYPE_IGNORE) - OSMO_ASSERT(endp->bts_end.codec.payload_type == - t->exp_bts_ptype); - if (t->exp_net_ptype != PTYPE_IGNORE) - OSMO_ASSERT(endp->net_end.codec.payload_type == - t->exp_net_ptype); - - /* Reset them again for next test */ - endp->net_end.codec.payload_type = PTYPE_NONE; - } - } - - talloc_free(cfg); -} - -static void test_retransmission(void) -{ - struct mgcp_config *cfg; - int i; - - cfg = mgcp_config_alloc(); - - cfg->trunk.number_endpoints = 64; - mgcp_endpoints_allocate(&cfg->trunk); - - mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1)); - - /* reset endpoints */ - for (i = 0; i < cfg->trunk.number_endpoints; i++) { - struct mgcp_endpoint *endp; - endp = &cfg->trunk.endpoints[i]; - endp->bts_end.packet_duration_ms = 20; - } - - for (i = 0; i < ARRAY_SIZE(retransmit); i++) { - const struct mgcp_test *t = &retransmit[i]; - struct msgb *inp; - struct msgb *msg; - - printf("Testing %s\n", t->name); - - inp = create_msg(t->req); - msg = mgcp_handle_message(cfg, inp); - msgb_free(inp); - if (strcmp((char *) msg->data, t->exp_resp) != 0) - printf("%s failed '%s'\n", t->name, (char *) msg->data); - msgb_free(msg); - - /* Retransmit... */ - printf("Re-transmitting %s\n", t->name); - inp = create_msg(t->req); - msg = mgcp_handle_message(cfg, inp); - msgb_free(inp); - if (strcmp((char *) msg->data, t->exp_resp) != 0) - printf("%s failed '%s'\n", t->name, (char *) msg->data); - msgb_free(msg); - } - - talloc_free(cfg); -} - -static int rqnt_cb(struct mgcp_endpoint *endp, char _tone) -{ - ptrdiff_t tone = _tone; - endp->cfg->data = (void *) tone; - return 0; -} - -static void test_rqnt_cb(void) -{ - struct mgcp_config *cfg; - struct msgb *inp, *msg; - - cfg = mgcp_config_alloc(); - cfg->rqnt_cb = rqnt_cb; - - cfg->trunk.number_endpoints = 64; - mgcp_endpoints_allocate(&cfg->trunk); - - mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1)); - - inp = create_msg(CRCX); - msgb_free(mgcp_handle_message(cfg, inp)); - msgb_free(inp); - - /* send the RQNT and check for the CB */ - inp = create_msg(RQNT); - msg = mgcp_handle_message(cfg, inp); - if (strncmp((const char *) msg->l2h, "200", 3) != 0) { - printf("FAILED: message is not 200. '%s'\n", msg->l2h); - abort(); - } - - if (cfg->data != (void *) '9') { - printf("FAILED: callback not called: %p\n", cfg->data); - abort(); - } - - msgb_free(msg); - msgb_free(inp); - - inp = create_msg(DLCX); - msgb_free(mgcp_handle_message(cfg, inp)); - msgb_free(inp); - talloc_free(cfg); -} - -struct pl_test { - int cycles; - uint16_t base_seq; - uint16_t max_seq; - uint32_t packets; - - uint32_t expected; - int loss; -}; - -static const struct pl_test pl_test_dat[] = { - /* basic.. just one package */ - { .cycles = 0, .base_seq = 0, .max_seq = 0, .packets = 1, .expected = 1, .loss = 0}, - /* some packages and a bit of loss */ - { .cycles = 0, .base_seq = 0, .max_seq = 100, .packets = 100, .expected = 101, .loss = 1}, - /* wrap around */ - { .cycles = 1<<16, .base_seq = 0xffff, .max_seq = 2, .packets = 4, .expected = 4, .loss = 0}, - /* min loss */ - { .cycles = 0, .base_seq = 0, .max_seq = 0, .packets = UINT_MAX, .expected = 1, .loss = INT_MIN }, - /* max loss, with wrap around on expected max */ - { .cycles = INT_MAX, .base_seq = 0, .max_seq = UINT16_MAX, .packets = 0, .expected = ((uint32_t)(INT_MAX) + UINT16_MAX + 1), .loss = INT_MAX }, -}; - -static void test_packet_loss_calc(void) -{ - int i; - printf("Testing packet loss calculation.\n"); - - for (i = 0; i < ARRAY_SIZE(pl_test_dat); ++i) { - uint32_t expected; - int loss; - struct mgcp_rtp_state state; - struct mgcp_rtp_end rtp; - memset(&state, 0, sizeof(state)); - memset(&rtp, 0, sizeof(rtp)); - - state.stats_initialized = 1; - state.stats_base_seq = pl_test_dat[i].base_seq; - state.stats_max_seq = pl_test_dat[i].max_seq; - state.stats_cycles = pl_test_dat[i].cycles; - - rtp.packets = pl_test_dat[i].packets; - mgcp_state_calc_loss(&state, &rtp, &expected, &loss); - - if (loss != pl_test_dat[i].loss || expected != pl_test_dat[i].expected) { - printf("FAIL: Wrong exp/loss at idx(%d) Loss(%d vs. %d) Exp(%u vs. %u)\n", - i, loss, pl_test_dat[i].loss, - expected, pl_test_dat[i].expected); - } - } -} - -static void test_mgcp_stats(void) -{ - printf("Testing stat parsing\n"); - - uint32_t bps, bos, pr, _or, jitter; - struct msgb *msg; - int loss; - int rc; - - msg = create_msg(DLCX_RET); - rc = mgcp_parse_stats(msg, &bps, &bos, &pr, &_or, &loss, &jitter); - printf("Parsing result: %d\n", rc); - if (bps != 0 || bos != 0 || pr != 0 || _or != 0 || loss != 0 || jitter != 0) - printf("FAIL: Parsing failed1.\n"); - msgb_free(msg); - - msg = create_msg("250 7 OK\r\nP: PS=10, OS=20, PR=30, OR=40, PL=-3, JI=40\r\n"); - rc = mgcp_parse_stats(msg, &bps, &bos, &pr, &_or, &loss, &jitter); - printf("Parsing result: %d\n", rc); - if (bps != 10 || bos != 20 || pr != 30 || _or != 40 || loss != -3 || jitter != 40) - printf("FAIL: Parsing failed2.\n"); - msgb_free(msg); -} - -struct rtp_packet_info { - float txtime; - int len; - char *data; -}; - -struct rtp_packet_info test_rtp_packets1[] = { - /* RTP: SeqNo=0, TS=0 */ - {0.000000, 20, "\x80\x62\x00\x00\x00\x00\x00\x00\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=1, TS=160 */ - {0.020000, 20, "\x80\x62\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=2, TS=320 */ - {0.040000, 20, "\x80\x62\x00\x02\x00\x00\x01\x40\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* Repeat RTP timestamp: */ - /* RTP: SeqNo=3, TS=320 */ - {0.060000, 20, "\x80\x62\x00\x03\x00\x00\x01\x40\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=4, TS=480 */ - {0.080000, 20, "\x80\x62\x00\x04\x00\x00\x01\xE0\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=5, TS=640 */ - {0.100000, 20, "\x80\x62\x00\x05\x00\x00\x02\x80\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* Double skip RTP timestamp (delta = 2*160): */ - /* RTP: SeqNo=6, TS=960 */ - {0.120000, 20, "\x80\x62\x00\x06\x00\x00\x03\xC0\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=7, TS=1120 */ - {0.140000, 20, "\x80\x62\x00\x07\x00\x00\x04\x60\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=8, TS=1280 */ - {0.160000, 20, "\x80\x62\x00\x08\x00\x00\x05\x00\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* Non 20ms RTP timestamp (delta = 120): */ - /* RTP: SeqNo=9, TS=1400 */ - {0.180000, 20, "\x80\x62\x00\x09\x00\x00\x05\x78\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=10, TS=1560 */ - {0.200000, 20, "\x80\x62\x00\x0A\x00\x00\x06\x18\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=11, TS=1720 */ - {0.220000, 20, "\x80\x62\x00\x0B\x00\x00\x06\xB8\x11\x22\x33\x44" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* SSRC changed to 0x10203040, RTP timestamp jump */ - /* RTP: SeqNo=12, TS=34688 */ - {0.240000, 20, "\x80\x62\x00\x0C\x00\x00\x87\x80\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=13, TS=34848 */ - {0.260000, 20, "\x80\x62\x00\x0D\x00\x00\x88\x20\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=14, TS=35008 */ - {0.280000, 20, "\x80\x62\x00\x0E\x00\x00\x88\xC0\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* Non 20ms RTP timestamp (delta = 120): */ - /* RTP: SeqNo=15, TS=35128 */ - {0.300000, 20, "\x80\x62\x00\x0F\x00\x00\x89\x38\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=16, TS=35288 */ - {0.320000, 20, "\x80\x62\x00\x10\x00\x00\x89\xD8\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=17, TS=35448 */ - {0.340000, 20, "\x80\x62\x00\x11\x00\x00\x8A\x78\x10\x20\x30\x40" - "\x01\x23\x45\x67\x8A\xAB\xCD\xEF"}, - /* SeqNo increment by 2, RTP timestamp delta = 320: */ - /* RTP: SeqNo=19, TS=35768 */ - {0.360000, 20, "\x80\x62\x00\x13\x00\x00\x8B\xB8\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=20, TS=35928 */ - {0.380000, 20, "\x80\x62\x00\x14\x00\x00\x8C\x58\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=21, TS=36088 */ - {0.380000, 20, "\x80\x62\x00\x15\x00\x00\x8C\xF8\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* Repeat last packet */ - /* RTP: SeqNo=21, TS=36088 */ - {0.400000, 20, "\x80\x62\x00\x15\x00\x00\x8C\xF8\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=22, TS=36248 */ - {0.420000, 20, "\x80\x62\x00\x16\x00\x00\x8D\x98\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=23, TS=36408 */ - {0.440000, 20, "\x80\x62\x00\x17\x00\x00\x8E\x38\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* Don't increment SeqNo but increment timestamp by 160 */ - /* RTP: SeqNo=23, TS=36568 */ - {0.460000, 20, "\x80\x62\x00\x17\x00\x00\x8E\xD8\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=24, TS=36728 */ - {0.480000, 20, "\x80\x62\x00\x18\x00\x00\x8F\x78\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=25, TS=36888 */ - {0.500000, 20, "\x80\x62\x00\x19\x00\x00\x90\x18\x10\x20\x30\x40" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* SSRC changed to 0x50607080, RTP timestamp jump, Delay of 1.5s, - * SeqNo jump */ - /* RTP: SeqNo=1000, TS=160000 */ - {2.000000, 20, "\x80\x62\x03\xE8\x00\x02\x71\x00\x50\x60\x70\x80" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=1001, TS=160160 */ - {2.020000, 20, "\x80\x62\x03\xE9\x00\x02\x71\xA0\x50\x60\x70\x80" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, - /* RTP: SeqNo=1002, TS=160320 */ - {2.040000, 20, "\x80\x62\x03\xEA\x00\x02\x72\x40\x50\x60\x70\x80" - "\x01\x23\x45\x67\x89\xAB\xCD\xEF"}, -}; - -void mgcp_patch_and_count(struct mgcp_endpoint *endp, struct mgcp_rtp_state *state, - struct mgcp_rtp_end *rtp_end, struct sockaddr_in *addr, - char *data, int len); - -static void test_packet_error_detection(int patch_ssrc, int patch_ts) -{ - int i; - - struct mgcp_trunk_config trunk; - struct mgcp_endpoint endp; - struct mgcp_rtp_state state; - struct mgcp_rtp_end *rtp = &endp.net_end; - struct sockaddr_in addr = {0}; - char buffer[4096]; - uint32_t last_ssrc = 0; - uint32_t last_timestamp = 0; - uint32_t last_seqno = 0; - int last_in_ts_err_cnt = 0; - int last_out_ts_err_cnt = 0; - - printf("Testing packet error detection%s%s.\n", - patch_ssrc ? ", patch SSRC" : "", - patch_ts ? ", patch timestamps" : ""); - - memset(&trunk, 0, sizeof(trunk)); - memset(&endp, 0, sizeof(endp)); - memset(&state, 0, sizeof(state)); - - trunk.number_endpoints = 1; - trunk.endpoints = &endp; - trunk.force_constant_ssrc = patch_ssrc; - trunk.force_aligned_timing = patch_ts; - - endp.tcfg = &trunk; - - mgcp_initialize_endp(&endp); - - rtp->codec.payload_type = 98; - - for (i = 0; i < ARRAY_SIZE(test_rtp_packets1); ++i) { - struct rtp_packet_info *info = test_rtp_packets1 + i; - - force_monotonic_time_us = round(1000000.0 * info->txtime); - - OSMO_ASSERT(info->len <= sizeof(buffer)); - OSMO_ASSERT(info->len >= 0); - memmove(buffer, info->data, info->len); - - mgcp_rtp_end_config(&endp, 1, rtp); - - mgcp_patch_and_count(&endp, &state, rtp, &addr, - buffer, info->len); - - if (state.out_stream.ssrc != last_ssrc) { - printf("Output SSRC changed to %08x\n", - state.out_stream.ssrc); - last_ssrc = state.out_stream.ssrc; - } - - printf("In TS: %d, dTS: %d, Seq: %d\n", - state.in_stream.last_timestamp, - state.in_stream.last_tsdelta, - state.in_stream.last_seq); - - printf("Out TS change: %d, dTS: %d, Seq change: %d, " - "TS Err change: in %+d, out %+d\n", - state.out_stream.last_timestamp - last_timestamp, - state.out_stream.last_tsdelta, - state.out_stream.last_seq - last_seqno, - state.in_stream.err_ts_counter - last_in_ts_err_cnt, - state.out_stream.err_ts_counter - last_out_ts_err_cnt); - - printf("Stats: Jitter = %u, Transit = %d\n", - mgcp_state_calc_jitter(&state), state.stats_transit); - - last_in_ts_err_cnt = state.in_stream.err_ts_counter; - last_out_ts_err_cnt = state.out_stream.err_ts_counter; - last_timestamp = state.out_stream.last_timestamp; - last_seqno = state.out_stream.last_seq; - } - - force_monotonic_time_us = -1; -} - -static void test_multilple_codec(void) -{ - struct mgcp_config *cfg; - struct mgcp_endpoint *endp; - struct msgb *inp, *resp; - struct in_addr addr; - - printf("Testing multiple payload types\n"); - - cfg = mgcp_config_alloc(); - cfg->trunk.number_endpoints = 64; - mgcp_endpoints_allocate(&cfg->trunk); - cfg->policy_cb = mgcp_test_policy_cb; - mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1)); - - /* Allocate endpoint 1@mgw with two codecs */ - last_endpoint = -1; - inp = create_msg(CRCX_MULT_1); - resp = mgcp_handle_message(cfg, inp); - msgb_free(inp); - msgb_free(resp); - - OSMO_ASSERT(last_endpoint == 1); - endp = &cfg->trunk.endpoints[last_endpoint]; - OSMO_ASSERT(endp->net_end.codec.payload_type == 18); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 97); - - /* Allocate 2@mgw with three codecs, last one ignored */ - last_endpoint = -1; - inp = create_msg(CRCX_MULT_2); - resp = mgcp_handle_message(cfg, inp); - msgb_free(inp); - msgb_free(resp); - - OSMO_ASSERT(last_endpoint == 2); - endp = &cfg->trunk.endpoints[last_endpoint]; - OSMO_ASSERT(endp->net_end.codec.payload_type == 18); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 97); - - /* Allocate 3@mgw with no codecs, check for PT == -1 */ - last_endpoint = -1; - inp = create_msg(CRCX_MULT_3); - resp = mgcp_handle_message(cfg, inp); - msgb_free(inp); - msgb_free(resp); - - OSMO_ASSERT(last_endpoint == 3); - endp = &cfg->trunk.endpoints[last_endpoint]; - OSMO_ASSERT(endp->net_end.codec.payload_type == -1); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == -1); - - /* Allocate 4@mgw with a single codec */ - last_endpoint = -1; - inp = create_msg(CRCX_MULT_4); - resp = mgcp_handle_message(cfg, inp); - msgb_free(inp); - msgb_free(resp); - - OSMO_ASSERT(last_endpoint == 4); - endp = &cfg->trunk.endpoints[last_endpoint]; - OSMO_ASSERT(endp->net_end.codec.payload_type == 18); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == -1); - - /* Allocate 5@mgw at select GSM.. */ - last_endpoint = -1; - inp = create_msg(CRCX_MULT_GSM_EXACT); - talloc_free(cfg->trunk.audio_name); - cfg->trunk.audio_name = "GSM/8000"; - cfg->trunk.no_audio_transcoding = 1; - resp = mgcp_handle_message(cfg, inp); - msgb_free(inp); - msgb_free(resp); - - OSMO_ASSERT(last_endpoint == 5); - endp = &cfg->trunk.endpoints[last_endpoint]; - OSMO_ASSERT(endp->net_end.codec.payload_type == 3); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == -1); - - inp = create_msg(MDCX_NAT_DUMMY); - last_endpoint = -1; - resp = mgcp_handle_message(cfg, inp); - msgb_free(inp); - msgb_free(resp); - OSMO_ASSERT(last_endpoint == 5); - endp = &cfg->trunk.endpoints[last_endpoint]; - OSMO_ASSERT(endp->net_end.codec.payload_type == 3); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == -1); - OSMO_ASSERT(endp->net_end.rtp_port == htons(16434)); - memset(&addr, 0, sizeof(addr)); - inet_aton("8.8.8.8", &addr); - OSMO_ASSERT(endp->net_end.addr.s_addr == addr.s_addr); - - /* Check what happens without that flag */ - - /* Free the previous endpoint and the data ... */ - mgcp_release_endp(endp); - talloc_free(endp->last_response); - talloc_free(endp->last_trans); - endp->last_response = endp->last_trans = NULL; - - last_endpoint = -1; - inp = create_msg(CRCX_MULT_GSM_EXACT); - cfg->trunk.no_audio_transcoding = 0; - resp = mgcp_handle_message(cfg, inp); - msgb_free(inp); - msgb_free(resp); - - OSMO_ASSERT(last_endpoint == 5); - endp = &cfg->trunk.endpoints[last_endpoint]; - OSMO_ASSERT(endp->net_end.codec.payload_type == 255); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 0); - - talloc_free(cfg); -} - -static void test_no_cycle(void) -{ - struct mgcp_config *cfg; - struct mgcp_endpoint *endp; - - printf("Testing no sequence flow on initial packet\n"); - - cfg = mgcp_config_alloc(); - cfg->trunk.number_endpoints = 64; - mgcp_endpoints_allocate(&cfg->trunk); - - endp = &cfg->trunk.endpoints[1]; - OSMO_ASSERT(endp->net_state.stats_initialized == 0); - - mgcp_rtp_annex_count(endp, &endp->net_state, 0, 0, 2342); - OSMO_ASSERT(endp->net_state.stats_initialized == 1); - OSMO_ASSERT(endp->net_state.stats_cycles == 0); - OSMO_ASSERT(endp->net_state.stats_max_seq == 0); - - mgcp_rtp_annex_count(endp, &endp->net_state, 1, 0, 2342); - OSMO_ASSERT(endp->net_state.stats_initialized == 1); - OSMO_ASSERT(endp->net_state.stats_cycles == 0); - OSMO_ASSERT(endp->net_state.stats_max_seq == 1); - - /* now jump.. */ - mgcp_rtp_annex_count(endp, &endp->net_state, UINT16_MAX, 0, 2342); - OSMO_ASSERT(endp->net_state.stats_initialized == 1); - OSMO_ASSERT(endp->net_state.stats_cycles == 0); - OSMO_ASSERT(endp->net_state.stats_max_seq == UINT16_MAX); - - /* and wrap */ - mgcp_rtp_annex_count(endp, &endp->net_state, 0, 0, 2342); - OSMO_ASSERT(endp->net_state.stats_initialized == 1); - OSMO_ASSERT(endp->net_state.stats_cycles == UINT16_MAX + 1); - OSMO_ASSERT(endp->net_state.stats_max_seq == 0); - - talloc_free(cfg); -} - -static void test_no_name(void) -{ - struct mgcp_config *cfg; - struct mgcp_endpoint *endp; - struct msgb *inp, *msg; - int i; - - printf("Testing no rtpmap name\n"); - cfg = mgcp_config_alloc(); - - cfg->trunk.number_endpoints = 64; - cfg->trunk.audio_send_name = 0; - mgcp_endpoints_allocate(&cfg->trunk); - - cfg->policy_cb = mgcp_test_policy_cb; - - mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1)); - - /* reset endpoints */ - for (i = 0; i < cfg->trunk.number_endpoints; i++) { - endp = &cfg->trunk.endpoints[i]; - endp->net_end.codec.payload_type = PTYPE_NONE; - endp->net_end.packet_duration_ms = -1; - - OSMO_ASSERT(endp->conn_mode == MGCP_CONN_NONE); - endp->conn_mode |= CONN_UNMODIFIED; - } - - inp = create_msg(CRCX); - msg = mgcp_handle_message(cfg, inp); - if (strcmp((char *) msg->data, CRCX_RET_NO_RTPMAP) != 0) - printf("FAILED: there should not be a RTPMAP: %s\n", - (char *) msg->data); - msgb_free(inp); - msgb_free(msg); - - mgcp_release_endp(&cfg->trunk.endpoints[1]); - talloc_free(cfg); -} - -static void test_osmux_cid(void) -{ - int id, i; - - OSMO_ASSERT(osmux_used_cid() == 0); - id = osmux_get_cid(); - OSMO_ASSERT(id == 0); - OSMO_ASSERT(osmux_used_cid() == 1); - osmux_put_cid(id); - OSMO_ASSERT(osmux_used_cid() == 0); - - for (i = 0; i < 256; ++i) { - id = osmux_get_cid(); - OSMO_ASSERT(id == i); - OSMO_ASSERT(osmux_used_cid() == i + 1); - } - - id = osmux_get_cid(); - OSMO_ASSERT(id == -1); - - for (i = 0; i < 256; ++i) - osmux_put_cid(i); - OSMO_ASSERT(osmux_used_cid() == 0); -} - -int main(int argc, char **argv) -{ - msgb_talloc_ctx_init(NULL, 0); - osmo_init_logging(&log_info); - - test_strline(); - test_values(); - test_messages(); - test_retransmission(); - test_packet_loss_calc(); - test_rqnt_cb(); - test_mgcp_stats(); - test_packet_error_detection(1, 0); - test_packet_error_detection(0, 0); - test_packet_error_detection(0, 1); - test_packet_error_detection(1, 1); - test_multilple_codec(); - test_no_cycle(); - test_no_name(); - test_osmux_cid(); - - printf("Done\n"); - return EXIT_SUCCESS; -} diff --git a/tests/mgcp/mgcp_test.ok b/tests/mgcp/mgcp_test.ok deleted file mode 100644 index 4e27282ee..000000000 --- a/tests/mgcp/mgcp_test.ok +++ /dev/null @@ -1,480 +0,0 @@ -line: 'one CR' -line: 'two CR' -line: '' -line: 'one CRLF' -line: 'two CRLF' -line: '' -line: 'one LF' -line: 'two LF' -line: '' -line: 'mixed (4 lines)' -line: '' -line: '' -line: '' -Testing AUEP1 -Testing AUEP2 -Testing MDCX1 -Testing MDCX2 -Testing CRCX -Dummy packets: 1 -Detected packet duration: 40 -Requested packetetization period: 20-20 -Connection mode: 1: RECV -Testing MDCX3 -Dummy packets: 1 -Packet duration not set -Requested packetization period not set -Connection mode not set -Testing MDCX4 -Dummy packets: 1 -Detected packet duration: 40 -Requested packetetization period: 20-20 -Connection mode: 3: SEND RECV -Testing MDCX4_PT1 -Dummy packets: 1 -Detected packet duration: 40 -Requested packetetization period: 20-40 -Connection mode: 3: SEND RECV -Testing MDCX4_PT2 -Dummy packets: 1 -Detected packet duration: 40 -Requested packetetization period: 20-20 -Connection mode: 3: SEND RECV -Testing MDCX4_PT3 -Dummy packets: 1 -Detected packet duration: 40 -Requested packetization period not set -Connection mode: 3: SEND RECV -Testing MDCX4_SO -Detected packet duration: 40 -Requested packetetization period: 20-20 -Connection mode: 2: SEND -Testing MDCX4_RO -Dummy packets: 1 -Packet duration not set -Requested packetetization period: 20-20 -Connection mode: 1: RECV -Testing DLCX -Detected packet duration: 20 -Requested packetization period not set -Connection mode: 0: NONE -Testing CRCX_ZYN -Dummy packets: 1 -Packet duration not set -Requested packetization period not set -Connection mode: 1: RECV -Testing EMPTY -Testing SHORT1 -Testing SHORT2 -Testing SHORT3 -Testing SHORT4 -Testing RQNT1 -Testing RQNT2 -Testing DLCX -Detected packet duration: 20 -Requested packetization period not set -Connection mode: 0: NONE -Testing CRCX -Dummy packets: 1 -Detected packet duration: 40 -Requested packetetization period: 20-20 -Connection mode: 1: RECV -Testing MDCX3 -Dummy packets: 1 -Packet duration not set -Requested packetization period not set -Connection mode not set -Testing DLCX -Detected packet duration: 20 -Requested packetization period not set -Connection mode: 0: NONE -Testing CRCX -Re-transmitting CRCX -Testing RQNT1 -Re-transmitting RQNT1 -Testing RQNT2 -Re-transmitting RQNT2 -Testing MDCX3 -Re-transmitting MDCX3 -Testing DLCX -Re-transmitting DLCX -Testing packet loss calculation. -Testing stat parsing -Parsing result: 0 -Parsing result: 0 -Testing packet error detection, patch SSRC. -Output SSRC changed to 11223344 -In TS: 0, dTS: 0, Seq: 0 -Out TS change: 0, dTS: 0, Seq change: 0, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 160, dTS: 160, Seq: 1 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 320, dTS: 160, Seq: 2 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 320, dTS: 160, Seq: 3 -Out TS change: 0, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 10, Transit = 160 -In TS: 480, dTS: 160, Seq: 4 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 9, Transit = 160 -In TS: 640, dTS: 160, Seq: 5 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 8, Transit = 160 -In TS: 960, dTS: 320, Seq: 6 -Out TS change: 320, dTS: 320, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 18, Transit = 0 -In TS: 1120, dTS: 160, Seq: 7 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 17, Transit = 0 -In TS: 1280, dTS: 160, Seq: 8 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 16, Transit = 0 -In TS: 1400, dTS: 120, Seq: 9 -Out TS change: 120, dTS: 120, Seq change: 1, TS Err change: in +1, out +1 -Stats: Jitter = 17, Transit = 40 -In TS: 1560, dTS: 160, Seq: 10 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 16, Transit = 40 -In TS: 1720, dTS: 160, Seq: 11 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 15, Transit = 40 -In TS: 34688, dTS: 0, Seq: 12 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 34848, dTS: 160, Seq: 13 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 35008, dTS: 160, Seq: 14 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 35128, dTS: 120, Seq: 15 -Out TS change: 120, dTS: 120, Seq change: 1, TS Err change: in +1, out +1 -Stats: Jitter = 2, Transit = -32728 -In TS: 35288, dTS: 160, Seq: 16 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35448, dTS: 160, Seq: 17 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35768, dTS: 160, Seq: 19 -Out TS change: 320, dTS: 160, Seq change: 2, TS Err change: in +0, out +0 -Stats: Jitter = 12, Transit = -32888 -In TS: 35928, dTS: 160, Seq: 20 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 11, Transit = -32888 -In TS: 36088, dTS: 160, Seq: 21 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 20, Transit = -33048 -In TS: 36088, dTS: 160, Seq: 21 -Out TS change: 0, dTS: 160, Seq change: 0, TS Err change: in +0, out +0 -Stats: Jitter = 29, Transit = -32888 -In TS: 36248, dTS: 160, Seq: 22 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 27, Transit = -32888 -In TS: 36408, dTS: 160, Seq: 23 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 25, Transit = -32888 -In TS: 36568, dTS: 160, Seq: 23 -Out TS change: 160, dTS: 160, Seq change: 0, TS Err change: in +1, out +1 -Stats: Jitter = 24, Transit = -32888 -In TS: 36728, dTS: 160, Seq: 24 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 22, Transit = -32888 -In TS: 36888, dTS: 160, Seq: 25 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 21, Transit = -32888 -In TS: 160000, dTS: 0, Seq: 1000 -Out TS change: 12000, dTS: 12000, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -In TS: 160160, dTS: 160, Seq: 1001 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -In TS: 160320, dTS: 160, Seq: 1002 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -Testing packet error detection. -Output SSRC changed to 11223344 -In TS: 0, dTS: 0, Seq: 0 -Out TS change: 0, dTS: 0, Seq change: 0, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 160, dTS: 160, Seq: 1 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 320, dTS: 160, Seq: 2 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 320, dTS: 160, Seq: 3 -Out TS change: 0, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 10, Transit = 160 -In TS: 480, dTS: 160, Seq: 4 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 9, Transit = 160 -In TS: 640, dTS: 160, Seq: 5 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 8, Transit = 160 -In TS: 960, dTS: 320, Seq: 6 -Out TS change: 320, dTS: 320, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 18, Transit = 0 -In TS: 1120, dTS: 160, Seq: 7 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 17, Transit = 0 -In TS: 1280, dTS: 160, Seq: 8 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 16, Transit = 0 -In TS: 1400, dTS: 120, Seq: 9 -Out TS change: 120, dTS: 120, Seq change: 1, TS Err change: in +1, out +1 -Stats: Jitter = 17, Transit = 40 -In TS: 1560, dTS: 160, Seq: 10 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 16, Transit = 40 -In TS: 1720, dTS: 160, Seq: 11 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 15, Transit = 40 -Output SSRC changed to 10203040 -In TS: 34688, dTS: 0, Seq: 12 -Out TS change: 32968, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 34848, dTS: 160, Seq: 13 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 35008, dTS: 160, Seq: 14 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 35128, dTS: 120, Seq: 15 -Out TS change: 120, dTS: 120, Seq change: 1, TS Err change: in +1, out +1 -Stats: Jitter = 2, Transit = -32728 -In TS: 35288, dTS: 160, Seq: 16 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35448, dTS: 160, Seq: 17 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35768, dTS: 160, Seq: 19 -Out TS change: 320, dTS: 160, Seq change: 2, TS Err change: in +0, out +0 -Stats: Jitter = 12, Transit = -32888 -In TS: 35928, dTS: 160, Seq: 20 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 11, Transit = -32888 -In TS: 36088, dTS: 160, Seq: 21 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 20, Transit = -33048 -In TS: 36088, dTS: 160, Seq: 21 -Out TS change: 0, dTS: 160, Seq change: 0, TS Err change: in +0, out +0 -Stats: Jitter = 29, Transit = -32888 -In TS: 36248, dTS: 160, Seq: 22 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 27, Transit = -32888 -In TS: 36408, dTS: 160, Seq: 23 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 25, Transit = -32888 -In TS: 36568, dTS: 160, Seq: 23 -Out TS change: 160, dTS: 160, Seq change: 0, TS Err change: in +1, out +1 -Stats: Jitter = 24, Transit = -32888 -In TS: 36728, dTS: 160, Seq: 24 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 22, Transit = -32888 -In TS: 36888, dTS: 160, Seq: 25 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 21, Transit = -32888 -Output SSRC changed to 50607080 -In TS: 160000, dTS: 0, Seq: 1000 -Out TS change: 123112, dTS: 160, Seq change: 975, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -In TS: 160160, dTS: 160, Seq: 1001 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -In TS: 160320, dTS: 160, Seq: 1002 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -Testing packet error detection, patch timestamps. -Output SSRC changed to 11223344 -In TS: 0, dTS: 0, Seq: 0 -Out TS change: 0, dTS: 0, Seq change: 0, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 160, dTS: 160, Seq: 1 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 320, dTS: 160, Seq: 2 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 320, dTS: 160, Seq: 3 -Out TS change: 0, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 10, Transit = 160 -In TS: 480, dTS: 160, Seq: 4 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 9, Transit = 160 -In TS: 640, dTS: 160, Seq: 5 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 8, Transit = 160 -In TS: 960, dTS: 320, Seq: 6 -Out TS change: 320, dTS: 320, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 18, Transit = 0 -In TS: 1120, dTS: 160, Seq: 7 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 17, Transit = 0 -In TS: 1280, dTS: 160, Seq: 8 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 16, Transit = 0 -In TS: 1400, dTS: 120, Seq: 9 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +1, out +0 -Stats: Jitter = 17, Transit = 40 -In TS: 1560, dTS: 160, Seq: 10 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 16, Transit = 40 -In TS: 1720, dTS: 160, Seq: 11 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 15, Transit = 40 -Output SSRC changed to 10203040 -In TS: 34688, dTS: 0, Seq: 12 -Out TS change: 32968, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 34848, dTS: 160, Seq: 13 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 35008, dTS: 160, Seq: 14 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 35128, dTS: 120, Seq: 15 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +1, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35288, dTS: 160, Seq: 16 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35448, dTS: 160, Seq: 17 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35768, dTS: 160, Seq: 19 -Out TS change: 320, dTS: 160, Seq change: 2, TS Err change: in +0, out +0 -Stats: Jitter = 12, Transit = -32888 -In TS: 35928, dTS: 160, Seq: 20 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 11, Transit = -32888 -In TS: 36088, dTS: 160, Seq: 21 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 20, Transit = -33048 -In TS: 36088, dTS: 160, Seq: 21 -Out TS change: 0, dTS: 160, Seq change: 0, TS Err change: in +0, out +0 -Stats: Jitter = 29, Transit = -32888 -In TS: 36248, dTS: 160, Seq: 22 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 27, Transit = -32888 -In TS: 36408, dTS: 160, Seq: 23 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 25, Transit = -32888 -In TS: 36568, dTS: 160, Seq: 23 -Out TS change: 160, dTS: 160, Seq change: 0, TS Err change: in +1, out +1 -Stats: Jitter = 24, Transit = -32888 -In TS: 36728, dTS: 160, Seq: 24 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 22, Transit = -32888 -In TS: 36888, dTS: 160, Seq: 25 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 21, Transit = -32888 -Output SSRC changed to 50607080 -In TS: 160000, dTS: 0, Seq: 1000 -Out TS change: 123112, dTS: 160, Seq change: 975, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -In TS: 160160, dTS: 160, Seq: 1001 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -In TS: 160320, dTS: 160, Seq: 1002 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -Testing packet error detection, patch SSRC, patch timestamps. -Output SSRC changed to 11223344 -In TS: 0, dTS: 0, Seq: 0 -Out TS change: 0, dTS: 0, Seq change: 0, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 160, dTS: 160, Seq: 1 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 320, dTS: 160, Seq: 2 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = 0 -In TS: 320, dTS: 160, Seq: 3 -Out TS change: 0, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 10, Transit = 160 -In TS: 480, dTS: 160, Seq: 4 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 9, Transit = 160 -In TS: 640, dTS: 160, Seq: 5 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 8, Transit = 160 -In TS: 960, dTS: 320, Seq: 6 -Out TS change: 320, dTS: 320, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 18, Transit = 0 -In TS: 1120, dTS: 160, Seq: 7 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 17, Transit = 0 -In TS: 1280, dTS: 160, Seq: 8 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 16, Transit = 0 -In TS: 1400, dTS: 120, Seq: 9 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +1, out +0 -Stats: Jitter = 17, Transit = 40 -In TS: 1560, dTS: 160, Seq: 10 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 16, Transit = 40 -In TS: 1720, dTS: 160, Seq: 11 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 15, Transit = 40 -In TS: 34688, dTS: 0, Seq: 12 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 34848, dTS: 160, Seq: 13 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 35008, dTS: 160, Seq: 14 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -32768 -In TS: 35128, dTS: 120, Seq: 15 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +1, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35288, dTS: 160, Seq: 16 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35448, dTS: 160, Seq: 17 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 2, Transit = -32728 -In TS: 35768, dTS: 160, Seq: 19 -Out TS change: 320, dTS: 160, Seq change: 2, TS Err change: in +0, out +0 -Stats: Jitter = 12, Transit = -32888 -In TS: 35928, dTS: 160, Seq: 20 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 11, Transit = -32888 -In TS: 36088, dTS: 160, Seq: 21 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 20, Transit = -33048 -In TS: 36088, dTS: 160, Seq: 21 -Out TS change: 0, dTS: 160, Seq change: 0, TS Err change: in +0, out +0 -Stats: Jitter = 29, Transit = -32888 -In TS: 36248, dTS: 160, Seq: 22 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 27, Transit = -32888 -In TS: 36408, dTS: 160, Seq: 23 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 25, Transit = -32888 -In TS: 36568, dTS: 160, Seq: 23 -Out TS change: 160, dTS: 160, Seq change: 0, TS Err change: in +1, out +1 -Stats: Jitter = 24, Transit = -32888 -In TS: 36728, dTS: 160, Seq: 24 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 22, Transit = -32888 -In TS: 36888, dTS: 160, Seq: 25 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 21, Transit = -32888 -In TS: 160000, dTS: 0, Seq: 1000 -Out TS change: 12000, dTS: 12000, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -In TS: 160160, dTS: 160, Seq: 1001 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -In TS: 160320, dTS: 160, Seq: 1002 -Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0 -Stats: Jitter = 0, Transit = -144000 -Testing multiple payload types -Testing no sequence flow on initial packet -Testing no rtpmap name -Done diff --git a/tests/mgcp/mgcp_transcoding_test.c b/tests/mgcp/mgcp_transcoding_test.c deleted file mode 100644 index c5c0a0bab..000000000 --- a/tests/mgcp/mgcp_transcoding_test.c +++ /dev/null @@ -1,654 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include "bscconfig.h" -#ifndef BUILD_MGCP_TRANSCODING -#error "Requires MGCP transcoding enabled (see --enable-mgcp-transcoding)" -#endif - -#include "openbsc/mgcp_transcode.h" - -uint8_t *audio_frame_l16[] = { -}; - -struct rtp_packets { - float t; - int len; - char *data; -}; - -struct rtp_packets audio_packets_l16[] = { - /* RTP: SeqNo=1, TS=160 */ - {0.020000, 332, - "\x80\x0B\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED" - }, -}; - -struct rtp_packets audio_packets_gsm[] = { - /* RTP: SeqNo=1, TS=160 */ - {0.020000, 45, - "\x80\x03\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44" - "\xD4\x7C\xE3\xE9\x62\x50\x39\xF0\xF8\xB4\x68\xEA\x6C\x0E\x81\x1B" - "\x56\x2A\xD5\xBC\x69\x9C\xD1\xF0\x66\x7A\xEC\x49\x7A\x33\x3D\x0A" - "\xDE" - }, -}; - -struct rtp_packets audio_packets_gsm_invalid_size[] = { - /* RTP: SeqNo=1, TS=160 */ - {0.020000, 41, - "\x80\x03\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44" - "\xD4\x7C\xE3\xE9\x62\x50\x39\xF0\xF8\xB4\x68\xEA\x6C\x0E\x81\x1B" - "\x56\x2A\xD5\xBC\x69\x9C\xD1\xF0\x66\x7A\xEC\x49\x7A\x33\x3D\x0A" - "\xDE" - }, -}; - -struct rtp_packets audio_packets_gsm_invalid_data[] = { - /* RTP: SeqNo=1, TS=160 */ - {0.020000, 45, - "\x80\x03\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44" - "\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE" - "\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE" - "\xEE" - }, -}; - -struct rtp_packets audio_packets_gsm_invalid_ptype[] = { - /* RTP: SeqNo=1, TS=160 */ - {0.020000, 45, - "\x80\x08\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44" - "\xD4\x7C\xE3\xE9\x62\x50\x39\xF0\xF8\xB4\x68\xEA\x6C\x0E\x81\x1B" - "\x56\x2A\xD5\xBC\x69\x9C\xD1\xF0\x66\x7A\xEC\x49\x7A\x33\x3D\x0A" - "\xDE" - }, -}; - -struct rtp_packets audio_packets_g729[] = { - /* RTP: SeqNo=1, TS=160 */ - {0.020000, 32, - "\x80\x12\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44" - "\xAF\xC2\x81\x40\x00\xFA\xCE\xA4\x21\x7C\xC5\xC3\x4F\xA5\x98\xF5" - "\xB2\x95\xC4\xAD" - }, -}; - -struct rtp_packets audio_packets_pcma[] = { - /* RTP: SeqNo=1, TS=160 */ - {0.020000, 172, - "\x80\x08\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25" - }, - /* RTP: SeqNo=26527, TS=232640 */ - {0.020000, 92, - "\x80\x08\x67\x9f\x00\x03\x8c\xc0\x04\xaa\x67\x9f\xd5\xd5\xd5\xd5" - "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5" - "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5" - "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5" - "\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\x55\x55\xd5\xd5\x55\x55" - "\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\x55\x55\xd5\xd5" - }, - /* RTP: SeqNo=26528, TS=232720 */ - {0.020000, 92, - "\x80\x08\x67\xa0\x00\x03\x8d\x10\x04\xaa\x67\x9f\x55\xd5\xd5\x55" - "\xd5\x55\xd5\xd5\xd5\x55\xd5\x55\xd5\xd5\x55\xd5\x55\xd5\x55\xd5" - "\x55\x55\xd5\x55\xd5\xd5\x55\x55\x55\x55\x55\xd5\xd5\x55\xd5\xd5" - "\xd5\x55\xd5\xd5\xd5\x55\x54\x55\xd5\xd5\x55\xd5\xd5\xd5\xd5\x55" - "\x54\x55\xd5\x55\xd5\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd4" - "\xd5\x54\x55\xd5\xd4\xd5\x54\xd5\x55\xd5\xd5\xd5" - }, -}; - - - -static int audio_name_to_type(const char *name) -{ - if (!strcasecmp(name, "gsm")) - return 3; -#ifdef HAVE_BCG729 - else if (!strcasecmp(name, "g729")) - return 18; -#endif - else if (!strcasecmp(name, "pcma")) - return 8; - else if (!strcasecmp(name, "l16")) - return 11; - return -1; -} - -int mgcp_get_trans_frame_size(void *state_, int nsamples, int dst); - -static int given_configured_endpoint(int in_samples, int out_samples, - const char *srcfmt, const char *dstfmt, - void **out_ctx, struct mgcp_endpoint **out_endp) -{ - int rc; - struct mgcp_rtp_end *dst_end; - struct mgcp_rtp_end *src_end; - struct mgcp_config *cfg; - struct mgcp_trunk_config *tcfg; - struct mgcp_endpoint *endp; - - cfg = mgcp_config_alloc(); - tcfg = talloc_zero(cfg, struct mgcp_trunk_config); - endp = talloc_zero(tcfg, struct mgcp_endpoint); - - cfg->setup_rtp_processing_cb = mgcp_transcoding_setup; - cfg->rtp_processing_cb = mgcp_transcoding_process_rtp; - cfg->get_net_downlink_format_cb = mgcp_transcoding_net_downlink_format; - - tcfg->endpoints = endp; - tcfg->number_endpoints = 1; - tcfg->cfg = cfg; - endp->tcfg = tcfg; - endp->cfg = cfg; - mgcp_initialize_endp(endp); - - dst_end = &endp->bts_end; - dst_end->codec.payload_type = audio_name_to_type(dstfmt); - - src_end = &endp->net_end; - src_end->codec.payload_type = audio_name_to_type(srcfmt); - - if (out_samples) { - dst_end->codec.frame_duration_den = dst_end->codec.rate; - dst_end->codec.frame_duration_num = out_samples; - dst_end->frames_per_packet = 1; - dst_end->force_output_ptime = 1; - } - - rc = mgcp_transcoding_setup(endp, dst_end, src_end); - if (rc < 0) { - printf("setup failed: %s", strerror(-rc)); - abort(); - } - - *out_ctx = cfg; - *out_endp = endp; - return 0; -} - - -static int transcode_test(const char *srcfmt, const char *dstfmt, - uint8_t *src_pkts, size_t src_pkt_size) -{ - char buf[4096] = {0x80, 0}; - void *ctx; - - struct mgcp_rtp_end *dst_end; - struct mgcp_process_rtp_state *state; - struct mgcp_endpoint *endp; - int in_size; - const int in_samples = 160; - int len, cont; - - printf("== Transcoding test ==\n"); - printf("converting %s -> %s\n", srcfmt, dstfmt); - - given_configured_endpoint(in_samples, 0, srcfmt, dstfmt, &ctx, &endp); - - dst_end = &endp->bts_end; - state = dst_end->rtp_process_data; - OSMO_ASSERT(state != NULL); - - in_size = mgcp_transcoding_get_frame_size(state, in_samples, 0); - OSMO_ASSERT(sizeof(buf) >= in_size + 12); - - memcpy(buf, src_pkts, src_pkt_size); - - len = src_pkt_size; - - cont = mgcp_transcoding_process_rtp(endp, dst_end, - buf, &len, sizeof(buf)); - if (cont < 0) { - printf("Nothing encoded due: %s\n", strerror(-cont)); - talloc_free(ctx); - return -1; - } - - if (len < 24) { - printf("encoded: %s\n", osmo_hexdump((unsigned char *)buf, len)); - } else { - const char *str = osmo_hexdump((unsigned char *)buf, len); - int i = 0; - const int prefix = 4; - const int cutlen = 48; - int nchars = 0; - - printf("encoded:\n"); - do { - nchars = printf("%*s%-.*s", prefix, "", cutlen, str + i); - i += nchars - prefix; - printf("\n"); - } while (nchars - prefix >= cutlen); - } - printf("counted: %d\n", cont); - talloc_free(ctx); - return 0; -} - -static void test_rtp_seq_state(void) -{ - char buf[4096]; - int len; - int cont; - void *ctx; - struct mgcp_endpoint *endp; - struct mgcp_process_rtp_state *state; - struct rtp_hdr *hdr; - uint32_t ts_no; - uint16_t seq_no; - - given_configured_endpoint(160, 0, "pcma", "l16", &ctx, &endp); - state = endp->bts_end.rtp_process_data; - OSMO_ASSERT(!state->is_running); - OSMO_ASSERT(state->next_seq == 0); - OSMO_ASSERT(state->next_time == 0); - - /* initialize packet */ - len = audio_packets_pcma[0].len; - memcpy(buf, audio_packets_pcma[0].data, len); - cont = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, len); - OSMO_ASSERT(cont >= 0); - OSMO_ASSERT(state->is_running); - OSMO_ASSERT(state->next_seq == 2); - OSMO_ASSERT(state->next_time == 240); - - /* verify that the right timestamp was written */ - OSMO_ASSERT(len == audio_packets_pcma[0].len); - hdr = (struct rtp_hdr *) &buf[0]; - - memcpy(&ts_no, &hdr->timestamp, sizeof(ts_no)); - OSMO_ASSERT(htonl(ts_no) == 160); - memcpy(&seq_no, &hdr->sequence, sizeof(seq_no)); - OSMO_ASSERT(htons(seq_no) == 1); - /* Check the right sequence number is written */ - state->next_seq = 1234; - len = audio_packets_pcma[0].len; - memcpy(buf, audio_packets_pcma[0].data, len); - cont = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, len); - OSMO_ASSERT(cont >= 0); - OSMO_ASSERT(len == audio_packets_pcma[0].len); - hdr = (struct rtp_hdr *) &buf[0]; - - memcpy(&seq_no, &hdr->sequence, sizeof(seq_no)); - OSMO_ASSERT(htons(seq_no) == 1234); - - talloc_free(ctx); -} - -static void test_transcode_result(void) -{ - char buf[4096]; - int len, res; - void *ctx; - struct mgcp_endpoint *endp; - struct mgcp_process_rtp_state *state; - - { - /* from GSM to PCMA and same ptime */ - given_configured_endpoint(160, 0, "gsm", "pcma", &ctx, &endp); - state = endp->bts_end.rtp_process_data; - - /* result */ - len = audio_packets_gsm[0].len; - memcpy(buf, audio_packets_gsm[0].data, len); - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(res == sizeof(struct rtp_hdr)); - OSMO_ASSERT(state->sample_cnt == 0); - - len = res; - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(res == -ENOMSG); - - talloc_free(ctx); - } - - { - /* from GSM to PCMA and same ptime */ - given_configured_endpoint(160, 160, "gsm", "pcma", &ctx, &endp); - state = endp->bts_end.rtp_process_data; - - /* result */ - len = audio_packets_gsm[0].len; - memcpy(buf, audio_packets_gsm[0].data, len); - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(res == sizeof(struct rtp_hdr)); - OSMO_ASSERT(state->sample_cnt == 0); - - len = res; - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(res == -EAGAIN); - - talloc_free(ctx); - } - - { - /* from PCMA to GSM and wrong different ptime */ - given_configured_endpoint(80, 160, "pcma", "gsm", &ctx, &endp); - state = endp->bts_end.rtp_process_data; - - /* Add the first sample */ - len = audio_packets_pcma[1].len; - memcpy(buf, audio_packets_pcma[1].data, len); - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(state->sample_cnt == 80); - OSMO_ASSERT(state->next_time == 232640); - OSMO_ASSERT(res < 0); - - /* Add the second sample and it should be consumable */ - len = audio_packets_pcma[2].len; - memcpy(buf, audio_packets_pcma[2].data, len); - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(state->sample_cnt == 0); - OSMO_ASSERT(state->next_time == 232640 + 80 + 160); - OSMO_ASSERT(res == sizeof(struct rtp_hdr)); - - talloc_free(ctx); - } - - { - /* from PCMA to GSM with a big time jump */ - struct rtp_hdr *hdr; - uint32_t ts; - - given_configured_endpoint(80, 160, "pcma", "gsm", &ctx, &endp); - state = endp->bts_end.rtp_process_data; - - /* Add the first sample */ - len = audio_packets_pcma[1].len; - memcpy(buf, audio_packets_pcma[1].data, len); - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(state->sample_cnt == 80); - OSMO_ASSERT(state->next_time == 232640); - OSMO_ASSERT(state->next_seq == 26527); - OSMO_ASSERT(res < 0); - - /* Add a skip to the packet to force a 'resync' */ - len = audio_packets_pcma[2].len; - memcpy(buf, audio_packets_pcma[2].data, len); - hdr = (struct rtp_hdr *) &buf[0]; - /* jump the time and add alignment error */ - ts = ntohl(hdr->timestamp) + 123 * 80 + 2; - hdr->timestamp = htonl(ts); - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(res < 0); - OSMO_ASSERT(state->sample_cnt == 80); - OSMO_ASSERT(state->next_time == ts); - OSMO_ASSERT(state->next_seq == 26527); - /* TODO: this can create alignment errors */ - - - /* Now attempt to consume 160 samples */ - len = audio_packets_pcma[2].len; - memcpy(buf, audio_packets_pcma[2].data, len); - hdr = (struct rtp_hdr *) &buf[0]; - ts += 80; - hdr->timestamp = htonl(ts); - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(res == 12); - OSMO_ASSERT(state->sample_cnt == 0); - OSMO_ASSERT(state->next_time == ts + 160); - OSMO_ASSERT(state->next_seq == 26528); - - talloc_free(ctx); - } -} - -static void test_transcode_change(void) -{ - char buf[4096] = {0x80, 0}; - void *ctx; - - struct mgcp_endpoint *endp; - struct mgcp_process_rtp_state *state; - struct rtp_hdr *hdr; - - int len, res; - - { - /* from GSM to PCMA and same ptime */ - printf("Testing Initial L16->GSM, PCMA->GSM\n"); - given_configured_endpoint(160, 0, "l16", "gsm", &ctx, &endp); - endp->net_end.alt_codec = endp->net_end.codec; - endp->net_end.alt_codec.payload_type = audio_name_to_type("pcma"); - state = endp->bts_end.rtp_process_data; - - /* initial transcoding work */ - OSMO_ASSERT(state->src_fmt == AF_L16); - OSMO_ASSERT(state->dst_fmt == AF_GSM); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 8); - OSMO_ASSERT(endp->net_end.codec.payload_type == 11); - - /* result */ - len = audio_packets_pcma[0].len; - memcpy(buf, audio_packets_pcma[0].data, len); - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - state = endp->bts_end.rtp_process_data; - OSMO_ASSERT(res == sizeof(struct rtp_hdr)); - OSMO_ASSERT(state->sample_cnt == 0); - OSMO_ASSERT(state->src_fmt == AF_PCMA); - OSMO_ASSERT(state->dst_fmt == AF_GSM); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 11); - OSMO_ASSERT(endp->net_end.codec.payload_type == 8); - - len = res; - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(res == -ENOMSG); - OSMO_ASSERT(state == endp->bts_end.rtp_process_data); - - - /* now check that comfort noise doesn't change anything */ - len = audio_packets_pcma[1].len; - memcpy(buf, audio_packets_pcma[1].data, len); - hdr = (struct rtp_hdr *) buf; - hdr->payload_type = 12; - res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf)); - OSMO_ASSERT(state == endp->bts_end.rtp_process_data); - OSMO_ASSERT(state->sample_cnt == 80); - OSMO_ASSERT(state->src_fmt == AF_PCMA); - OSMO_ASSERT(state->dst_fmt == AF_GSM); - OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 11); - OSMO_ASSERT(endp->net_end.codec.payload_type == 8); - - talloc_free(ctx); - } -} - -static int test_repacking(int in_samples, int out_samples, int no_transcode) -{ - char buf[4096] = {0x80, 0}; - int cc; - struct mgcp_endpoint *endp; - void *ctx; - - struct mgcp_process_rtp_state *state; - int in_cnt; - int out_size; - int in_size; - uint32_t ts = 0; - uint16_t seq = 0; - const char *srcfmt = "pcma"; - const char *dstfmt = no_transcode ? "pcma" : "l16"; - - printf("== Transcoding test ==\n"); - printf("converting %s -> %s\n", srcfmt, dstfmt); - - given_configured_endpoint(in_samples, out_samples, srcfmt, dstfmt, &ctx, &endp); - - state = endp->bts_end.rtp_process_data; - OSMO_ASSERT(state != NULL); - - in_size = mgcp_transcoding_get_frame_size(state, in_samples, 0); - OSMO_ASSERT(sizeof(buf) >= in_size + 12); - - out_size = mgcp_transcoding_get_frame_size(state, -1, 1); - OSMO_ASSERT(sizeof(buf) >= out_size + 12); - - buf[1] = endp->net_end.codec.payload_type; - *(uint16_t*)(buf+2) = htons(1); - *(uint32_t*)(buf+4) = htonl(0); - *(uint32_t*)(buf+8) = htonl(0xaabbccdd); - - for (in_cnt = 0; in_cnt < 16; in_cnt++) { - int cont; - int len; - - /* fake PCMA data */ - printf("generating %d %s input samples\n", in_samples, srcfmt); - for (cc = 0; cc < in_samples; cc++) - buf[12+cc] = cc; - - *(uint16_t*)(buf+2) = htonl(seq); - *(uint32_t*)(buf+4) = htonl(ts); - - seq += 1; - ts += in_samples; - - cc += 12; /* include RTP header */ - - len = cc; - - do { - cont = mgcp_transcoding_process_rtp(endp, &endp->bts_end, - buf, &len, sizeof(buf)); - if (cont == -EAGAIN) { - fprintf(stderr, "Got EAGAIN\n"); - break; - } - - if (cont < 0) { - printf("processing failed: %s", strerror(-cont)); - abort(); - } - - len -= 12; /* ignore RTP header */ - - printf("got %d %s output frames (%d octets) count=%d\n", - len / out_size, dstfmt, len, cont); - - len = cont; - } while (len > 0); - } - - talloc_free(ctx); - return 0; -} - -int main(int argc, char **argv) -{ - int rc; - osmo_init_logging(&log_info); - - printf("=== Transcoding Good Cases ===\n"); - - transcode_test("l16", "l16", - (uint8_t *)audio_packets_l16[0].data, - audio_packets_l16[0].len); - transcode_test("l16", "gsm", - (uint8_t *)audio_packets_l16[0].data, - audio_packets_l16[0].len); - transcode_test("l16", "pcma", - (uint8_t *)audio_packets_l16[0].data, - audio_packets_l16[0].len); - transcode_test("gsm", "l16", - (uint8_t *)audio_packets_gsm[0].data, - audio_packets_gsm[0].len); - transcode_test("gsm", "gsm", - (uint8_t *)audio_packets_gsm[0].data, - audio_packets_gsm[0].len); - transcode_test("gsm", "pcma", - (uint8_t *)audio_packets_gsm[0].data, - audio_packets_gsm[0].len); - transcode_test("pcma", "l16", - (uint8_t *)audio_packets_pcma[0].data, - audio_packets_pcma[0].len); - transcode_test("pcma", "gsm", - (uint8_t *)audio_packets_pcma[0].data, - audio_packets_pcma[0].len); - transcode_test("pcma", "pcma", - (uint8_t *)audio_packets_pcma[0].data, - audio_packets_pcma[0].len); - - printf("=== Transcoding Bad Cases ===\n"); - - printf("Invalid size:\n"); - rc = transcode_test("gsm", "pcma", - (uint8_t *)audio_packets_gsm_invalid_size[0].data, - audio_packets_gsm_invalid_size[0].len); - OSMO_ASSERT(rc < 0); - - printf("Invalid data:\n"); - rc = transcode_test("gsm", "pcma", - (uint8_t *)audio_packets_gsm_invalid_data[0].data, - audio_packets_gsm_invalid_data[0].len); - OSMO_ASSERT(rc < 0); - - printf("Invalid payload type:\n"); - rc = transcode_test("gsm", "pcma", - (uint8_t *)audio_packets_gsm_invalid_ptype[0].data, - audio_packets_gsm_invalid_ptype[0].len); - OSMO_ASSERT(rc == 0); - - printf("=== Repacking ===\n"); - - test_repacking(160, 160, 0); - test_repacking(160, 160, 1); - test_repacking(160, 80, 0); - test_repacking(160, 80, 1); - test_repacking(160, 320, 0); - test_repacking(160, 320, 1); - test_repacking(160, 240, 0); - test_repacking(160, 240, 1); - test_repacking(160, 100, 0); - test_repacking(160, 100, 1); - test_rtp_seq_state(); - test_transcode_result(); - test_transcode_change(); - - return 0; -} - diff --git a/tests/mgcp/mgcp_transcoding_test.ok b/tests/mgcp/mgcp_transcoding_test.ok deleted file mode 100644 index 387cfd275..000000000 --- a/tests/mgcp/mgcp_transcoding_test.ok +++ /dev/null @@ -1,539 +0,0 @@ -=== Transcoding Good Cases === -== Transcoding test == -converting l16 -> l16 -encoded: - 80 0b 00 01 00 00 00 a0 11 22 33 44 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13 - 5a 9e 40 13 00 00 bf ed a5 62 bf ed -counted: 0 -== Transcoding test == -converting l16 -> gsm -encoded: - 80 0b 00 01 00 00 00 a0 11 22 33 44 d4 7c e3 e9 - 62 50 39 f0 f8 b4 68 ea 6c 0e 81 1b 56 2a d5 bc - 69 9c d1 f0 66 7a ec 49 7a 33 3d 0a de -counted: 12 -== Transcoding test == -converting l16 -> pcma -encoded: - 80 0b 00 01 00 00 00 a0 11 22 33 44 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 -counted: 12 -== Transcoding test == -converting gsm -> l16 -encoded: - 80 03 00 01 00 00 00 a0 11 22 33 44 00 00 54 00 - 59 f0 34 20 c4 c8 b9 f8 e2 18 f1 e8 f2 28 f0 e0 - 46 08 4f 80 2c a0 a9 c8 80 00 c0 58 3f 80 63 c0 - 24 b8 fa b8 f6 88 0b a0 c8 70 a8 b0 c8 c0 3b a8 - 66 a0 2e 38 d1 f8 98 98 aa 18 e8 30 26 a0 37 40 - 37 e8 17 00 ee 50 b7 80 b1 88 de 28 18 40 45 b0 - 4f 48 21 d8 df 78 ae 68 ab 98 d6 b8 18 18 48 90 - 4e 70 27 40 e8 10 b5 b0 ac 80 d4 60 14 50 48 48 - 50 10 2a 00 ec 08 ba 00 af 58 d1 c0 10 60 45 c8 - 54 10 30 78 f1 a8 bb 18 ad 48 ce 30 0a e8 3f 30 - 4f 10 32 18 f6 18 bf 20 ac 30 cd 80 0b d0 43 d8 - 55 e0 34 a0 f5 78 bc 98 ad 98 cd c8 0a 80 40 58 - 51 c0 35 40 f9 60 c1 68 ac c8 cb 38 08 00 40 98 - 51 e0 34 d8 fa 28 c2 f0 ae 40 c7 70 02 d0 3c a8 - 54 78 38 a0 fc 68 c2 08 ad 50 c7 78 01 60 39 c0 - 51 38 3a e8 00 e8 c6 38 ab d8 c4 00 fe 08 39 18 - 50 30 39 50 01 d8 ca 70 b1 80 c4 c8 fc 58 36 40 - 51 d8 3b 08 02 80 c8 58 b0 60 c5 a8 fb d0 33 e8 - 4e 80 3c e0 06 10 cb 90 ae 48 c2 60 f9 58 34 08 - 4d a0 3a a8 06 48 cf 80 b4 60 c3 e8 f7 90 30 18 - 4d a0 3b 98 07 90 cf 18 b4 68 c4 88 -counted: 12 -== Transcoding test == -converting gsm -> gsm -encoded: - 80 03 00 01 00 00 00 a0 11 22 33 44 d4 7c e3 e9 - 62 50 39 f0 f8 b4 68 ea 6c 0e 81 1b 56 2a d5 bc - 69 9c d1 f0 66 7a ec 49 7a 33 3d 0a de -counted: 0 -== Transcoding test == -converting gsm -> pcma -encoded: - 80 03 00 01 00 00 00 a0 11 22 33 44 d5 a0 a3 bf - 38 24 08 19 1e 1b a4 a6 b3 20 2a 3a ba ad b7 60 - 17 92 3e 20 3e b8 ac b2 32 2c 20 02 b6 be be 82 - 04 27 26 35 8d a4 a6 b5 35 21 20 31 8d a7 a6 b6 - 02 27 21 30 81 a7 a1 b0 06 24 21 32 85 a4 a0 bd - 19 24 21 3d 90 ba a6 bc 16 25 21 3c 92 a5 a0 bf - 10 25 21 3c 90 a5 a1 bf 6f 3a 21 3f 95 a5 a1 bf - 62 3b 21 39 f3 bb a0 b9 79 3b 21 39 c3 b9 a1 b8 - db 39 20 3b 4a b9 a1 b9 c8 3f 26 38 78 be a1 b8 - f1 3e 26 38 65 bc a6 bb ed 3f 21 3b 6f bf a6 b8 - ec 3d 27 3b 15 bd a6 b8 eb 3d 27 38 -counted: 12 -== Transcoding test == -converting pcma -> l16 -encoded: - 80 08 00 01 00 00 00 a0 11 22 33 44 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00 - 5a 00 42 00 00 08 be 00 a6 00 be 00 -counted: 12 -== Transcoding test == -converting pcma -> gsm -encoded: - 80 08 00 01 00 00 00 a0 11 22 33 44 d4 b9 f4 5d - d9 50 5a e1 a0 cd 76 ea 52 0e 87 53 ad d4 ea a2 - 0a 63 ca e9 60 79 e2 2a 25 d2 c0 f3 39 -counted: 12 -== Transcoding test == -converting pcma -> pcma -encoded: - 80 08 00 01 00 00 00 a0 11 22 33 44 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5 - d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 -counted: 0 -=== Transcoding Bad Cases === -Invalid size: -== Transcoding test == -converting gsm -> pcma -Nothing encoded due: No message of desired type -Invalid data: -== Transcoding test == -converting gsm -> pcma -Nothing encoded due: No message of desired type -Invalid payload type: -== Transcoding test == -converting gsm -> pcma -encoded: - 80 08 00 01 00 00 00 a0 11 22 33 44 d5 a0 a3 bf - 38 24 08 19 1e 1b a4 a6 b3 20 2a 3a ba ad b7 60 - 17 92 3e 20 3e b8 ac b2 32 2c 20 02 b6 be be 82 - 04 27 26 35 8d a4 a6 b5 35 21 20 31 8d a7 a6 b6 - 02 27 21 30 81 a7 a1 b0 06 24 21 32 85 a4 a0 bd - 19 24 21 3d 90 ba a6 bc 16 25 21 3c 92 a5 a0 bf - 10 25 21 3c 90 a5 a1 bf 6f 3a 21 3f 95 a5 a1 bf - 62 3b 21 39 f3 bb a0 b9 79 3b 21 39 c3 b9 a1 b8 - db 39 20 3b 4a b9 a1 b9 c8 3f 26 38 78 be a1 b8 - f1 3e 26 38 65 bc a6 bb ed 3f 21 3b 6f bf a6 b8 - ec 3d 27 3b 15 bd a6 b8 eb 3d 27 38 -counted: 12 -=== Repacking === -== Transcoding test == -converting pcma -> l16 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -generating 160 pcma input samples -got 2 l16 output frames (320 octets) count=12 -== Transcoding test == -converting pcma -> pcma -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -generating 160 pcma input samples -got 2 pcma output frames (160 octets) count=12 -== Transcoding test == -converting pcma -> l16 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -== Transcoding test == -converting pcma -> pcma -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -== Transcoding test == -converting pcma -> l16 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 l16 output frames (640 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 l16 output frames (640 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 l16 output frames (640 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 l16 output frames (640 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 l16 output frames (640 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 l16 output frames (640 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 l16 output frames (640 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 l16 output frames (640 octets) count=12 -== Transcoding test == -converting pcma -> pcma -generating 160 pcma input samples -generating 160 pcma input samples -got 4 pcma output frames (320 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 pcma output frames (320 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 pcma output frames (320 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 pcma output frames (320 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 pcma output frames (320 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 pcma output frames (320 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 pcma output frames (320 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 4 pcma output frames (320 octets) count=12 -== Transcoding test == -converting pcma -> l16 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 l16 output frames (480 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 l16 output frames (480 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 l16 output frames (480 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 l16 output frames (480 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 l16 output frames (480 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 l16 output frames (480 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 l16 output frames (480 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 l16 output frames (480 octets) count=12 -== Transcoding test == -converting pcma -> pcma -generating 160 pcma input samples -generating 160 pcma input samples -got 3 pcma output frames (240 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 pcma output frames (240 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 pcma output frames (240 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 pcma output frames (240 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 pcma output frames (240 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 pcma output frames (240 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 pcma output frames (240 octets) count=12 -generating 160 pcma input samples -generating 160 pcma input samples -got 3 pcma output frames (240 octets) count=12 -== Transcoding test == -converting pcma -> l16 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -generating 160 pcma input samples -got 1 l16 output frames (160 octets) count=12 -got 1 l16 output frames (160 octets) count=12 -== Transcoding test == -converting pcma -> pcma -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -generating 160 pcma input samples -got 1 pcma output frames (80 octets) count=12 -got 1 pcma output frames (80 octets) count=12 -Testing Initial L16->GSM, PCMA->GSM diff --git a/tests/mgcp/mgcpgw_client_test.c b/tests/mgcp/mgcpgw_client_test.c deleted file mode 100644 index 20e9b78da..000000000 --- a/tests/mgcp/mgcpgw_client_test.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * (C) 2016 by sysmocom s.f.m.c. GmbH - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#include - -#include -#include -#include -#include - -void *ctx; - -#define buf_len 4096 - -#if 0 -static struct msgb *from_hex(const char *hex) -{ - struct msgb *msg = msgb_alloc(buf_len, "mgcpgw_test_from_hex"); - unsigned int l = osmo_hexparse(hex, msg->data, buf_len); - msg->l2h = msgb_put(msg, l); - return msg; -} - -static struct msgb *mgcp_from_str(const char *head, const char *params) -{ - struct msgb *msg = msgb_alloc(buf_len, "mgcp_from_str"); - unsigned int l; - char *data; - l = strlen(head); - msg->l2h = msgb_put(msg, l); - data = (char*)msgb_l2(msg); - strncpy(data, head, l); - - data = (char*)msgb_put(msg, 1); - *data = '\n'; - - l = strlen(params); - data = (char*)msgb_put(msg, l); - strncpy(data, params, l); - - return msg; -} -#endif - -static struct msgb *from_str(const char *str) -{ - struct msgb *msg = msgb_alloc(buf_len, "from_str"); - unsigned int l = strlen(str); - char *data; - msg->l2h = msgb_put(msg, l); - data = (char*)msgb_l2(msg); - strncpy(data, str, l); - return msg; -} - -static struct mgcpgw_client_conf conf; -struct mgcpgw_client *mgcp = NULL; - -static void reply_to(mgcp_trans_id_t trans_id, int code, const char *comment, - int conn_id, const char *params) -{ - static char compose[4096 - 128]; - int len; - - len = snprintf(compose, sizeof(compose), - "%d %u %s\r\nI: %d\n\n%s", - code, trans_id, comment, conn_id, params); - OSMO_ASSERT(len < sizeof(compose)); - OSMO_ASSERT(len > 0); - - printf("composed response:\n-----\n%s\n-----\n", - compose); - mgcpgw_client_rx(mgcp, from_str(compose)); -} - -void test_response_cb(struct mgcp_response *response, void *priv) -{ - OSMO_ASSERT(priv == mgcp); - mgcp_response_parse_params(response); - - printf("response cb received:\n" - " head.response_code = %d\n" - " head.trans_id = %u\n" - " head.comment = %s\n" - " audio_port = %u\n", - response->head.response_code, - response->head.trans_id, - response->head.comment, - response->audio_port - ); -} - -mgcp_trans_id_t dummy_mgcp_send(struct msgb *msg) -{ - mgcp_trans_id_t trans_id; - trans_id = msg->cb[MSGB_CB_MGCP_TRANS_ID]; - char *end; - - OSMO_ASSERT(mgcpgw_client_pending_add(mgcp, trans_id, test_response_cb, mgcp)); - - end = (char*)msgb_put(msg, 1); - *end = '\0'; - printf("composed:\n-----\n%s\n-----\n", - (char*)msgb_l2(msg)); - - talloc_free(msg); - return trans_id; -} - -void test_crcx(void) -{ - struct msgb *msg; - mgcp_trans_id_t trans_id; - - printf("\n===== %s =====\n", __func__); - - if (mgcp) - talloc_free(mgcp); - mgcp = mgcpgw_client_init(ctx, &conf); - - msg = mgcp_msg_crcx(mgcp, 23, 42, MGCP_CONN_LOOPBACK); - trans_id = dummy_mgcp_send(msg); - - reply_to(trans_id, 200, "OK", 1, - "v=0\r\n" - "o=- 1 23 IN IP4 10.9.1.120\r\n" - "s=-\r\n" - "c=IN IP4 10.9.1.120\r\n" - "t=0 0\r\n" - "m=audio 16002 RTP/AVP 98\r\n" - "a=rtpmap:98 AMR/8000\r\n" - "a=ptime:20\r\n"); -} - -int main(int argc, char **argv) -{ - ctx = talloc_named_const(NULL, 1, "mgcpgw_client_test"); - msgb_talloc_ctx_init(ctx, 0); - osmo_init_logging(&log_info); - - mgcpgw_client_conf_init(&conf); - - test_crcx(); - - printf("Done\n"); - fprintf(stderr, "Done\n"); - return EXIT_SUCCESS; -} diff --git a/tests/mgcp/mgcpgw_client_test.err b/tests/mgcp/mgcpgw_client_test.err deleted file mode 100644 index a965a70ed..000000000 --- a/tests/mgcp/mgcpgw_client_test.err +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/mgcp/mgcpgw_client_test.ok b/tests/mgcp/mgcpgw_client_test.ok deleted file mode 100644 index d35f2d6b0..000000000 --- a/tests/mgcp/mgcpgw_client_test.ok +++ /dev/null @@ -1,31 +0,0 @@ - -===== test_crcx ===== -composed: ------ -CRCX 1 17@mgw MGCP 1.0 -C: 2a -L: p:20, a:AMR, nt:IN -M: loopback - ------ -composed response: ------ -200 1 OK -I: 1 - -v=0 -o=- 1 23 IN IP4 10.9.1.120 -s=- -c=IN IP4 10.9.1.120 -t=0 0 -m=audio 16002 RTP/AVP 98 -a=rtpmap:98 AMR/8000 -a=ptime:20 - ------ -response cb received: - head.response_code = 200 - head.trans_id = 1 - head.comment = OK - audio_port = 16002 -Done diff --git a/tests/mm_auth/Makefile.am b/tests/mm_auth/Makefile.am deleted file mode 100644 index cb351988b..000000000 --- a/tests/mm_auth/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBCRYPTO_CFLAGS) \ - $(NULL) - -noinst_PROGRAMS = \ - mm_auth_test \ - $(NULL) - -EXTRA_DIST = \ - mm_auth_test.ok \ - $(NULL) - -mm_auth_test_SOURCES = \ - mm_auth_test.c \ - $(NULL) - -mm_auth_test_LDFLAGS = \ - -Wl,--wrap=db_get_authinfo_for_subscr \ - -Wl,--wrap=db_get_lastauthtuple_for_subscr \ - -Wl,--wrap=db_sync_lastauthtuple_for_subscr \ - $(NULL) - -mm_auth_test_LDADD = \ - $(top_builddir)/src/libmsc/libmsc.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(NULL) diff --git a/tests/mm_auth/mm_auth_test.c b/tests/mm_auth/mm_auth_test.c deleted file mode 100644 index f620385f9..000000000 --- a/tests/mm_auth/mm_auth_test.c +++ /dev/null @@ -1,84 +0,0 @@ -#include - -#include -#include - -#include -#include -#include -#include - -#define min(A,B) ((A)>(B)? (B) : (A)) - -#if 0 -static char *auth_tuple_str(struct gsm_auth_tuple *atuple) -{ - static char buf[256]; - char *pos = buf; - int len = sizeof(buf); - int l; - -#define print2buf(FMT, args...) do {\ - l = snprintf(pos, len, FMT, ## args); \ - pos += l;\ - len -= l;\ - } while (0) - - print2buf("gsm_auth_tuple {\n"); - print2buf(" .use_count = %d\n", atuple->use_count); - print2buf(" .key_seq = %d\n", atuple->key_seq); - print2buf(" .rand = %s\n", osmo_hexdump(atuple->vec.rand, sizeof(atuple->vec.rand))); - print2buf(" .sres = %s\n", osmo_hexdump(atuple->vec.sres, sizeof(atuple->vec.sres))); - print2buf(" .kc = %s\n", osmo_hexdump(atuple->vec.kc, sizeof(atuple->vec.kc))); - print2buf("}\n"); -#undef print2buf - - return buf; -} - -static bool auth_tuple_is(struct gsm_auth_tuple *atuple, - const char *expect_str) -{ - int l, l1, l2; - int i; - char *tuple_str = auth_tuple_str(atuple); - bool same = (strcmp(expect_str, tuple_str) == 0); - if (!same) { - l1 = strlen(expect_str); - l2 = strlen(tuple_str); - printf("Expected %d:\n%s\nGot %d:\n%s\n", - l1, expect_str, l2, tuple_str); - l = min(l1, l2); - for (i = 0; i < l; i++) { - if (expect_str[i] != tuple_str[i]) { - printf("Difference at pos %d" - " (%c 0x%0x != %c 0x%0x)\n", - i, expect_str[i], expect_str[i], - tuple_str[i], tuple_str[i]); - break; - } - } - } - return same; -} -#endif - -int test_get_authinfo_rc = 0; -struct gsm_auth_info test_auth_info = {0}; -struct gsm_auth_info default_auth_info = { - .auth_algo = AUTH_ALGO_COMP128v1, - .a3a8_ki_len = 16, - .a3a8_ki = { 0 } -}; - - -int main(void) -{ - osmo_init_logging(&log_info); - log_set_log_level(osmo_stderr_target, LOGL_INFO); - - printf("Nothing being tested!\n"); - - /* TODO auth_get_tuple_for_subscr() no longer exists ... test auth somehow?? */ - return 0; -} diff --git a/tests/mm_auth/mm_auth_test.ok b/tests/mm_auth/mm_auth_test.ok deleted file mode 100644 index 37b1289be..000000000 --- a/tests/mm_auth/mm_auth_test.ok +++ /dev/null @@ -1 +0,0 @@ -Nothing being tested! diff --git a/tests/msc_vlr/Makefile.am b/tests/msc_vlr/Makefile.am deleted file mode 100644 index a2b0f0889..000000000 --- a/tests/msc_vlr/Makefile.am +++ /dev/null @@ -1,160 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBSMPP34_CFLAGS) \ - $(LIBCRYPTO_CFLAGS) \ - $(LIBOSMOVTY_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(LIBOSMOSIGTRAN_CFLAGS) \ - $(NULL) - -noinst_HEADERS = \ - msc_vlr_tests.h \ - $(NULL) - -EXTRA_DIST = \ - msc_vlr_test_no_authen.ok \ - msc_vlr_test_no_authen.err \ - msc_vlr_test_gsm_authen.ok \ - msc_vlr_test_gsm_authen.err \ - msc_vlr_test_gsm_ciph.ok \ - msc_vlr_test_gsm_ciph.err \ - msc_vlr_test_umts_authen.ok \ - msc_vlr_test_umts_authen.err \ - msc_vlr_test_hlr_reject.ok \ - msc_vlr_test_hlr_reject.err \ - msc_vlr_test_hlr_timeout.ok \ - msc_vlr_test_hlr_timeout.err \ - msc_vlr_test_ms_timeout.ok \ - msc_vlr_test_ms_timeout.err \ - msc_vlr_test_reject_concurrency.ok \ - msc_vlr_test_reject_concurrency.err \ - msc_vlr_test_rest.ok \ - msc_vlr_test_rest.err \ - $(NULL) - -LDADD = \ - $(top_builddir)/src/libmsc/libmsc.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/src/libvlr/libvlr.a \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libmgcp/libmgcp.a \ - $(top_builddir)/tests/libiudummy/libiudummy.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBSMPP34_LIBS) \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBCRYPTO_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOSIGTRAN_LIBS) \ - -ldbi \ - -lrt \ - $(NULL) - -LDFLAGS = \ - -Wl,--wrap=gsup_client_create \ - -Wl,--wrap=gsup_client_send \ - -Wl,--wrap=a_iface_tx_dtap \ - -Wl,--wrap=a_iface_tx_paging \ - -Wl,--wrap=ranap_iu_tx \ - -Wl,--wrap=ranap_iu_page_cs \ - -Wl,--wrap=msc_stop_paging \ - -Wl,--wrap=gsm340_gen_scts \ - -Wl,--wrap=RAND_bytes \ - $(NULL) - -noinst_PROGRAMS = \ - msc_vlr_test_no_authen \ - msc_vlr_test_gsm_authen \ - msc_vlr_test_gsm_ciph \ - msc_vlr_test_umts_authen \ - msc_vlr_test_hlr_reject \ - msc_vlr_test_hlr_timeout \ - msc_vlr_test_ms_timeout \ - msc_vlr_test_reject_concurrency \ - msc_vlr_test_rest \ - $(NULL) - -msc_vlr_test_no_authen_SOURCES = \ - msc_vlr_test_no_authen.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_no_authen_LDADD = $(LDADD) -msc_vlr_test_no_authen_LDFLAGS = $(LDFLAGS) - -msc_vlr_test_gsm_authen_SOURCES = \ - msc_vlr_test_gsm_authen.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_gsm_authen_LDADD = $(LDADD) -msc_vlr_test_gsm_authen_LDFLAGS = $(LDFLAGS) - -msc_vlr_test_gsm_ciph_SOURCES = \ - msc_vlr_test_gsm_ciph.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_gsm_ciph_LDADD = $(LDADD) -msc_vlr_test_gsm_ciph_LDFLAGS = $(LDFLAGS) - -msc_vlr_test_umts_authen_SOURCES = \ - msc_vlr_test_umts_authen.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_umts_authen_LDADD = $(LDADD) -msc_vlr_test_umts_authen_LDFLAGS = $(LDFLAGS) - -msc_vlr_test_hlr_reject_SOURCES = \ - msc_vlr_test_hlr_reject.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_hlr_reject_LDADD = $(LDADD) -msc_vlr_test_hlr_reject_LDFLAGS = $(LDFLAGS) - -msc_vlr_test_hlr_timeout_SOURCES = \ - msc_vlr_test_hlr_timeout.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_hlr_timeout_LDADD = $(LDADD) -msc_vlr_test_hlr_timeout_LDFLAGS = $(LDFLAGS) - -msc_vlr_test_ms_timeout_SOURCES = \ - msc_vlr_test_ms_timeout.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_ms_timeout_LDADD = $(LDADD) -msc_vlr_test_ms_timeout_LDFLAGS = $(LDFLAGS) - -msc_vlr_test_reject_concurrency_SOURCES = \ - msc_vlr_test_reject_concurrency.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_reject_concurrency_LDADD = $(LDADD) -msc_vlr_test_reject_concurrency_LDFLAGS = $(LDFLAGS) - -msc_vlr_test_rest_SOURCES = \ - msc_vlr_test_rest.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_rest_LDADD = $(LDADD) -msc_vlr_test_rest_LDFLAGS = $(LDFLAGS) - -.PHONY: update_exp -update_exp: - $(builddir)/msc_vlr_test_no_authen >$(srcdir)/msc_vlr_test_no_authen.ok 2>$(srcdir)/msc_vlr_test_no_authen.err - $(builddir)/msc_vlr_test_gsm_authen >$(srcdir)/msc_vlr_test_gsm_authen.ok 2>$(srcdir)/msc_vlr_test_gsm_authen.err - $(builddir)/msc_vlr_test_gsm_ciph >$(srcdir)/msc_vlr_test_gsm_ciph.ok 2>$(srcdir)/msc_vlr_test_gsm_ciph.err - $(builddir)/msc_vlr_test_umts_authen >$(srcdir)/msc_vlr_test_umts_authen.ok 2>$(srcdir)/msc_vlr_test_umts_authen.err - $(builddir)/msc_vlr_test_hlr_reject >$(srcdir)/msc_vlr_test_hlr_reject.ok 2>$(srcdir)/msc_vlr_test_hlr_reject.err - $(builddir)/msc_vlr_test_hlr_timeout >$(srcdir)/msc_vlr_test_hlr_timeout.ok 2>$(srcdir)/msc_vlr_test_hlr_timeout.err - $(builddir)/msc_vlr_test_ms_timeout >$(srcdir)/msc_vlr_test_ms_timeout.ok 2>$(srcdir)/msc_vlr_test_ms_timeout.err - $(builddir)/msc_vlr_test_reject_concurrency >$(srcdir)/msc_vlr_test_reject_concurrency.ok 2>$(srcdir)/msc_vlr_test_reject_concurrency.err - $(builddir)/msc_vlr_test_rest >$(srcdir)/msc_vlr_test_rest.ok 2>$(srcdir)/msc_vlr_test_rest.err diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c deleted file mode 100644 index 22e549b2f..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c +++ /dev/null @@ -1,888 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -void test_gsm_authen() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - net->authentication_required = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject"); - gsup_rx("06010809710000004026f0", NULL); - EXPECT_ACCEPTED(false); - - thwart_rx_non_initial_requests(); - - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); - auth_request_sent = false; - auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b"; - cm_service_result_sent = RES_NONE; - ms_sends_msg("05247803305886089910070000006402"); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts with a CM Service Accept"); - gsup_expect_tx(NULL); - ms_sends_msg("0554" "20bde240" /* 2nd vector's sres, s.a. */); - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 46071\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_imsi(imsi); - paging_sent = false; - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response, and VLR sends Auth Request with third key"); - auth_request_sent = false; - auth_request_expect_rand = "e7c03ba7cf0e2fde82b2dc4d63077d42"; - ms_sends_msg("06270703305882089910070000006402"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and sends pending SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05806470f1" /* originating address 46071 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("0554" "a29514ae" /* 3rd vector's sres, s.a. */); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_gsm_authen_tmsi() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - net->authentication_required = true; - net->vlr->cfg.assign_tmsi = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject"); - gsup_rx("06010809710000004026f0", NULL); - EXPECT_ACCEPTED(false); - - thwart_rx_non_initial_requests(); - - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the new TMSI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector"); - auth_request_sent = false; - auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b"; - cm_service_result_sent = RES_NONE; - ms_sends_msg("05247803305886" "05f4" "03020100"); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts with a CM Service Accept"); - gsup_expect_tx(NULL); - ms_sends_msg("0554" "20bde240" /* 2nd vector's sres, s.a. */); - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 46071\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_tmsi(0x03020100); - paging_sent = false; - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key"); - auth_request_sent = false; - auth_request_expect_rand = "e7c03ba7cf0e2fde82b2dc4d63077d42"; - ms_sends_msg("06270703305882" "05f4" "03020100"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and sends pending SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05806470f1" /* originating address 46071 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("0554" "a29514ae" /* 3rd vector's sres, s.a. */); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - /* TODO: when the subscriber detaches, the vlr_subscr gets - * deallocated and we no longer know the TMSI. This case is covered by - * test_lu_unknown_tmsi(), so here I'd like to still have the TMSI. - BTW("subscriber detaches, using TMSI"); - ms_sends_msg("050130" "05f4" "03020100"); - EXPECT_CONN_COUNT(0); - */ - - BTW("subscriber sends LU Request, this time with the TMSI"); - btw("Location Update request causes an Auth Req to MS"); - lu_result_sent = RES_NONE; - auth_request_sent = false; - auth_request_expect_rand = "fa8f20b781b5881329d4fea26b1a3c51"; - ms_sends_msg("050802008168000130" "05f4" "03020100"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05545afc8d72"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x07060504); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x07060504, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - btw("subscriber has the new TMSI"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x07060504); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == 0x07060504, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches, using new TMSI"); - ms_sends_msg("050130" "05f4" "07060504"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_gsm_authen_imei() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - net->authentication_required = true; - net->vlr->cfg.check_imei_rqd = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject"); - gsup_rx("06010809710000004026f0", NULL); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS"); - dtap_expect_tx("051802"); - gsup_rx("06010809710000004026f0", NULL); - - btw("We will only do business when the IMEI is known"); - EXPECT_CONN_COUNT(1); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(vsub->imei[0], == 0, "%d"); - vlr_subscr_put(vsub); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS replies with an Identity Response"); - ms_sends_msg("0559084a32244332244332"); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the IMEI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_gsm_authen_tmsi_imei() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - net->authentication_required = true; - net->vlr->cfg.assign_tmsi = true; - net->vlr->cfg.check_imei_rqd = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject"); - gsup_rx("06010809710000004026f0", NULL); - EXPECT_ACCEPTED(false); - - thwart_rx_non_initial_requests(); - - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS"); - dtap_expect_tx("051802"); - gsup_rx("06010809710000004026f0", NULL); - - btw("We will only do business when the IMEI is known"); - EXPECT_CONN_COUNT(1); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(vsub->imei[0], == 0, "%d"); - vlr_subscr_put(vsub); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS replies with an Identity Response"); - ms_sends_msg("0559084a32244332244332"); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the IMEI and TMSI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches, using TMSI"); - ms_sends_msg("050130" "05f4" "03020100"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_gsm_milenage_authen() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000010650"; - - comment_start(); - - net->authentication_required = true; - rx_from_ran = RAN_GERAN_A; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("080108" "09710000000156f0"); - ms_sends_msg("0508" /* MM LU */ - "7" /* ciph key seq: no key available */ - "0" /* LU type: normal */ - "ffffff" "0000" /* LAI, LAC */ - "30" /* classmark 1: GSM phase 2 */ - "089910070000106005" /* IMSI */ - ); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* based on auc_3g: - * K = 'EB215756028D60E3275E613320AEC880', - * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308' - * SQN = 0 - */ - auth_request_sent = false; - auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d"; - auth_request_expect_autn = NULL; - gsup_rx("0a" - /* imsi */ - "0108" "09710000000156f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" - /* TL sres TL kc */ - "2104" "9b36efdf" "2208" "059a4f668f6fbe39" - /* TL 3G IK */ - "2310" "27497388b6cb044648f396aa155b95ef" - /* TL 3G CK */ - "2410" "f64735036e5871319c679f4742a75ea1" - /* TL AUTN */ - "2510" "8704f5ba55f30000d2ee44b22c8ea919" - /* TL RES */ - "2708" "e229c19e791f2e41" - "0362" "2010" "c187a53a5e6b9d573cac7c74451fd46d" - "2104" "85aa3130" "2208" "d3d50a000bf04f6e" - "2310" "1159ec926a50e98c034a6b7d7c9f418d" - "2410" "df3a03d9ca5335641efc8e36d76cd20b" - "2510" "1843a645b98d00005b2d666af46c45d9" - "2708" "7db47cf7f81e4dc7" - "0362" "2010" "efa9c29a9742148d5c9070348716e1bb" - "2104" "69d5f9fb" "2208" "3df176f0c29f1a3d" - "2310" "eb50e770ddcc3060101d2f43b6c2b884" - "2410" "76542abce5ff9345b0e8947f4c6e019c" - "2510" "f9375e6d41e1000096e7fe4ff1c27e39" - "2708" "706f996719ba609c" - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000000156f0"); - ms_sends_msg("0554" "9b36efdf"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000000156f00804032443f2", - "12010809710000000156f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000000156f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); - auth_request_sent = false; - auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d"; - auth_request_expect_autn = NULL; - cm_service_result_sent = RES_NONE; - ms_sends_msg("052478" - "03305886" /* classmark 2: GSM phase 2 */ - "089910070000106005" /* IMSI */); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts with a CM Service Accept"); - gsup_expect_tx(NULL); - ms_sends_msg("0554" "85aa3130"); /* 2nd vector's sres, s.a. */ - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 42342\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_imsi(imsi); - paging_sent = false; - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response, and VLR sends Auth Request with third key"); - auth_request_sent = false; - auth_request_expect_rand = "efa9c29a9742148d5c9070348716e1bb"; - auth_request_expect_autn = NULL; - ms_sends_msg("062707" - "03305886" /* classmark 2 */ - "089910070000106005" /* IMSI */); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and sends pending SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05802443f2" /* originating address 42342 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("0554" "69d5f9fb"); /* 3nd vector's sres, s.a. */ - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130" - "089910070000106005" /* IMSI */); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_gsm_authen, - test_gsm_authen_tmsi, - test_gsm_authen_imei, - test_gsm_authen_tmsi_imei, - test_gsm_milenage_authen, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err deleted file mode 100644 index e3f372cc4..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ /dev/null @@ -1,1946 +0,0 @@ -===== test_gsm_authen -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and... -- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b -- ...expecting sres=20bde240 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 0 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts with a CM Service Accept - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: 20 bd e2 40 -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -- a USSD request is serviced - expecting USSD: - Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:46071: MSISDN = 46071 -DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d -- DTAP matches expected message -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- MS replies with Paging Response, and VLR sends Auth Request with third key - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and... -- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42 -- ...expecting sres=a29514ae -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and sends pending SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: a2 95 14 ae -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:46071 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_gsm_authen: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_gsm_authen_tmsi -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:46071, with TMSI 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -- Subscriber has the new TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0xffffffff - vsub->tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and... -- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b -- ...expecting sres=20bde240 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 0 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts with a CM Service Accept - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: 20 bd e2 40 -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -- a USSD request is serviced - expecting USSD: - Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:46071: MSISDN = 46071 -DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d -- DTAP matches expected message -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0 - paging_expecting_tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(TMSI)=50462976 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and... -- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42 -- ...expecting sres=a29514ae -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and sends pending SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: a2 95 14 ae -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:46071 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber sends LU Request, this time with the TMSI -- Location Update request causes an Auth Req to MS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: is child of Subscr_Conn(50462976) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=3 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=3 auth_types=0x1 and... -- ...rand=fa8f20b781b5881329d4fea26b1a3c51 -- ...expecting sres=5afc8d72 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 5afc8d72) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: 5a fc 8d 72 -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(50462976) -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(50462976) -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(50462976) -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(50462976) -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(50462976) -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:46071, with TMSI 0x07060504 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:46071 usage increases to: 3 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x07060504 - vsub->tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071 -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(50462976) -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(50462976) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -- subscriber has the new TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0xffffffff - vsub->tmsi == 0x07060504 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- subscriber detaches, using new TMSI - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(TMSI)=117835012 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_gsm_authen_tmsi: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_gsm_authen_imei -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI -DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- We will only do business when the IMEI is known - llist_count(&net->subscr_conns) == 1 -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->imei[0] == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS replies with an Identity Response - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19) -DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -- Subscriber has the IMEI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - strcmp(vsub->imei, "423423423423423") == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_gsm_authen_imei: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_gsm_authen_tmsi_imei -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI -DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- We will only do business when the IMEI is known - llist_count(&net->subscr_conns) == 1 -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->imei[0] == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS replies with an Identity Response - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19) -DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:46071, with TMSI 0x03020100 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -- Subscriber has the IMEI and TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - strcmp(vsub->imei, "423423423423423") == 0 - vsub->tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- subscriber detaches, using TMSI - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_gsm_authen_tmsi_imei: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_gsm_milenage_authen -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL -DMM LU/new-LAC: 0/0 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650 -DVLR New subscr, IMSI: 901700000010650 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c -DVLR GSUP rx 311: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000010650) Received 3 auth tuples -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... -- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d -- ...expecting sres=9b36efdf -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000010650: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000010650: MM GSM AUTHENTICATION RESPONSE (sres = 9b36efdf) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000010650) received res: 9b 36 ef df -DVLR SUBSCR(IMSI:901700000010650) AUTH established GSM security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0 -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2 -DVLR GSUP rx 17: 10010809710000000156f00804032443f2 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR IMSI:901700000010650 has MSISDN:42342 -DVLR GSUP tx: 12010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0 -DVLR GSUP rx 11: 06010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:42342 -DREF VLR subscr MSISDN:42342 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000010650 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DREF VLR subscr MSISDN:42342 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- sending GSM Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and... -- ...rand=c187a53a5e6b9d573cac7c74451fd46d -- ...expecting sres=85aa3130 -DREF VLR subscr MSISDN:42342 usage decreases to: 2 -DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:42342: MSC conn use - 1 == 1 - cm_service_result_sent == 0 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts with a CM Service Accept - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:42342: MM GSM AUTHENTICATION RESPONSE (sres = 85aa3130) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:42342) received res: 85 aa 31 30 -DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:42342 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:42342: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -- a USSD request is serviced - expecting USSD: - Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:42342: MSISDN = 42342 -DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d -- DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:42342 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:42342 usage increases to: 3 -DMM Subscriber MSISDN:42342 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000010650, TMSI 0xffffffff, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:42342 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:42342 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 3 -- MS replies with Paging Response, and VLR sends Auth Request with third key - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000010650 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:42342 usage increases to: 4 -DREF VLR subscr MSISDN:42342 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- sending GSM Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x3 and... -- ...rand=efa9c29a9742148d5c9070348716e1bb -- ...expecting sres=69d5f9fb -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:42342: MSC conn use - 1 == 1 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and sends pending SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:42342: MM GSM AUTHENTICATION RESPONSE (sres = 69d5f9fb) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:42342) received res: 69 d5 f9 fb -DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:42342 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:42342 usage increases to: 5 -DREF MSISDN:42342: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:42342: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:42342 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:42342: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:42342: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:42342: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:42342 usage decreases to: 3 -DREF VLR subscr MSISDN:42342 usage decreases to: 2 -DREF MSISDN:42342: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DMM Subscriber MSISDN:42342 DETACHED -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:42342 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_gsm_milenage_authen: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.ok b/tests/msc_vlr/msc_vlr_test_gsm_authen.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c deleted file mode 100644 index 6b5017b78..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c +++ /dev/null @@ -1,1436 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -void test_ciph() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - /* implicit: net->authentication_required = true; */ - net->a5_encryption = VLR_CIPH_A5_1; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS"); - cipher_mode_cmd_sent = false; - ms_sends_msg("05542d8b2c3e"); - OSMO_ASSERT(cipher_mode_cmd_sent); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0632"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); - cm_service_result_sent = RES_NONE; - auth_request_sent = false; - auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b"; - ms_sends_msg("05247803305886089910070000006402"); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and requests Ciphering"); - cipher_mode_cmd_sent = false; - ms_sends_msg("0554" "20bde240" /* 2nd vector's sres, s.a. */); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept"); - ms_sends_msg("0632"); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 46071\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_imsi(imsi); - paging_sent = false; - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response, and VLR sends Auth Request with third key"); - auth_request_sent = false; - auth_request_expect_rand = "e7c03ba7cf0e2fde82b2dc4d63077d42"; - ms_sends_msg("06270703305882089910070000006402"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and requests Ciphering"); - cipher_mode_cmd_sent = false; - ms_sends_msg("0554" "a29514ae" /* 3rd vector's sres, s.a. */); - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05806470f1" /* originating address 46071 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("0632"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_ciph_tmsi() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - /* implicit: net->authentication_required = true; */ - net->a5_encryption = VLR_CIPH_A5_1; - net->vlr->cfg.assign_tmsi = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS"); - cipher_mode_cmd_sent = false; - ms_sends_msg("05542d8b2c3e"); - OSMO_ASSERT(cipher_mode_cmd_sent); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0632"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the new TMSI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector"); - cm_service_result_sent = RES_NONE; - auth_request_sent = false; - auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b"; - auth_request_expect_autn = NULL; - ms_sends_msg("05247803305886" "05f4" "03020100"); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and requests Ciphering"); - cipher_mode_cmd_sent = false; - ms_sends_msg("0554" "20bde240" /* 2nd vector's sres, s.a. */); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept"); - ms_sends_msg("0632"); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 46071\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_tmsi(0x03020100); - paging_sent = false; - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key"); - auth_request_sent = false; - auth_request_expect_rand = "e7c03ba7cf0e2fde82b2dc4d63077d42"; - ms_sends_msg("06270703305882" "05f4" "03020100"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and requests Ciphering"); - cipher_mode_cmd_sent = false; - ms_sends_msg("0554" "a29514ae" /* 3rd vector's sres, s.a. */); - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05806470f1" /* originating address 46071 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("0632"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches, using TMSI"); - ms_sends_msg("050130" "05f4" "03020100"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_ciph_imei() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - /* implicit: net->authentication_required = true; */ - net->a5_encryption = VLR_CIPH_A5_1; - net->vlr->cfg.check_imei_rqd = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS"); - cipher_mode_cmd_sent = false; - ms_sends_msg("05542d8b2c3e"); - OSMO_ASSERT(cipher_mode_cmd_sent); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0632"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS"); - dtap_expect_tx("051802"); - gsup_rx("06010809710000004026f0", NULL); - - btw("We will only do business when the IMEI is known"); - EXPECT_CONN_COUNT(1); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(vsub->imei[0], == 0, "%d"); - vlr_subscr_put(vsub); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS replies with an Identity Response"); - ms_sends_msg("0559084a32244332244332"); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the IMEI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_ciph_imeisv() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - /* implicit: net->authentication_required = true; */ - net->a5_encryption = VLR_CIPH_A5_1; - net->vlr->cfg.retrieve_imeisv = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS"); - cipher_mode_cmd_sent = false; - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - VERBOSE_ASSERT(cipher_mode_cmd_sent_with_imeisv, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(vsub->imeisv[0], == 0, "%d"); - vlr_subscr_put(vsub); - - btw("MS sends Ciphering Mode Complete with IMEISV, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("063217094b32244332244332f5"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("Subscriber has the IMEISV"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imeisv, "4234234234234235"), == 0, "%d"); - vlr_subscr_put(vsub); - - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS replies with an Identity Response"); - ms_sends_msg("0559084a32244332244332"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_ciph_tmsi_imei() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - /* implicit: net->authentication_required = true; */ - net->a5_encryption = VLR_CIPH_A5_1; - net->vlr->cfg.assign_tmsi = true; - net->vlr->cfg.check_imei_rqd = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS"); - cipher_mode_cmd_sent = false; - ms_sends_msg("05542d8b2c3e"); - OSMO_ASSERT(cipher_mode_cmd_sent); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("needs ciph, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0632"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS"); - dtap_expect_tx("051802"); - gsup_rx("06010809710000004026f0", NULL); - - btw("We will only do business when the IMEI is known"); - EXPECT_CONN_COUNT(1); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(vsub->imei[0], == 0, "%d"); - vlr_subscr_put(vsub); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS replies with an Identity Response"); - ms_sends_msg("0559084a32244332244332"); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the IMEI and TMSI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches, using TMSI"); - ms_sends_msg("050130" "05f4" "03020100"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_lu_unknown_tmsi() -{ - comment_start(); - - btw("Location Update request with unknown TMSI sends ID Request for IMSI"); - lu_result_sent = RES_NONE; - dtap_expect_tx("051801"); - ms_sends_msg("050802008168000130" "05f4" "23422342"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS tells us the IMSI, causes a GSUP LU request to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0559089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void _test_umts_authen(enum ran_type via_ran) -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000010650"; - - net->authentication_required = true; - rx_from_ran = via_ran; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("080108" "09710000000156f0"); - ms_sends_msg("0508" /* MM LU */ - "7" /* ciph key seq: no key available */ - "0" /* LU type: normal */ - "ffffff" "0000" /* LAI, LAC */ - "57" /* classmark 1: R99, early classmark, no power lvl */ - "089910070000106005" /* IMSI */ - "3303575886" /* classmark 2 */ - ); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* based on auc_3g: - * K = 'EB215756028D60E3275E613320AEC880', - * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308' - * SQN = 0 - */ - auth_request_sent = false; - auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d"; - auth_request_expect_autn = "8704f5ba55f30000d2ee44b22c8ea919"; - gsup_rx("0a" - /* imsi */ - "0108" "09710000000156f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" - /* TL sres TL kc */ - "2104" "9b36efdf" "2208" "059a4f668f6fbe39" - /* TL 3G IK */ - "2310" "27497388b6cb044648f396aa155b95ef" - /* TL 3G CK */ - "2410" "f64735036e5871319c679f4742a75ea1" - /* TL AUTN */ - "2510" "8704f5ba55f30000d2ee44b22c8ea919" - /* TL RES */ - "2708" "e229c19e791f2e41" - /* TL TL rand */ - "0362" "2010" "c187a53a5e6b9d573cac7c74451fd46d" - "2104" "85aa3130" "2208" "d3d50a000bf04f6e" - "2310" "1159ec926a50e98c034a6b7d7c9f418d" - "2410" "df3a03d9ca5335641efc8e36d76cd20b" - "2510" "1843a645b98d00005b2d666af46c45d9" - "2708" "7db47cf7f81e4dc7" - "0362" "2010" "efa9c29a9742148d5c9070348716e1bb" - "2104" "69d5f9fb" "2208" "3df176f0c29f1a3d" - "2310" "eb50e770ddcc3060101d2f43b6c2b884" - "2410" "76542abce5ff9345b0e8947f4c6e019c" - "2510" "f9375e6d41e1000096e7fe4ff1c27e39" - "2708" "706f996719ba609c" - "0362" "2010" "f023d5a3b24726e0631b64b3840f8253" - "2104" "d570c03f" "2208" "ec011be8919883d6" - "2310" "c4e58af4ba43f3bcd904e16984f086d7" - "2410" "0593f65e752e5cb7f473862bda05aa0a" - "2510" "541ff1f077270000c5ea00d658bc7e9a" - "2708" "3fd26072eaa2a04d" - "0362" "2010" "2f8f90c780d6a9c0c53da7ac57b6707e" - "2104" "b072446f220823f39f9f425ad6e6" - "2310" "65af0527fda95b0dc5ae4aa515cdf32f" - "2410" "537c3b35a3b13b08d08eeb28098f45cc" - "2510" "4bf4e564f75300009bc796706bc65744" - "2708" "0edb0eadbea94ac2", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000000156f0"); - ms_sends_msg("0554" "e229c19e" "2104" "791f2e41"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000000156f00804032443f2", - "12010809710000000156f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000000156f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); - auth_request_sent = false; - auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d"; - auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9"; - cm_service_result_sent = RES_NONE; - ms_sends_msg("052478" - "03575886" /* classmark 2 */ - "089910070000106005" /* IMSI */); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts with a CM Service Accept"); - gsup_expect_tx(NULL); - ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */ - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 42342\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_imsi(imsi); - paging_sent = false; - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response, and VLR sends Auth Request with third key"); - auth_request_sent = false; - auth_request_expect_rand = "efa9c29a9742148d5c9070348716e1bb"; - auth_request_expect_autn = "f9375e6d41e1000096e7fe4ff1c27e39"; - ms_sends_msg("062707" - "03575886" /* classmark 2 */ - "089910070000106005" /* IMSI */); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and sends pending SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05802443f2" /* originating address 42342 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */ - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130" - "089910070000106005" /* IMSI */); - - EXPECT_CONN_COUNT(0); - clear_vlr(); -} - -void test_umts_authen_geran() -{ - comment_start(); - _test_umts_authen(RAN_GERAN_A); - comment_end(); -} - -void test_umts_authen_utran() -{ - comment_start(); - _test_umts_authen(RAN_UTRAN_IU); - comment_end(); -} - -#define RECALC_AUTS 0 - -#if RECALC_AUTS -typedef uint8_t u8; -extern int milenage_f2345(const u8 *opc, const u8 *k, const u8 *_rand, - u8 *res, u8 *ck, u8 *ik, u8 *ak, u8 *akstar); -extern int milenage_f1(const u8 *opc, const u8 *k, const u8 *_rand, - const u8 *sqn, const u8 *amf, u8 *mac_a, u8 *mac_s); -#endif - -void _test_umts_authen_resync(enum ran_type via_ran) -{ - net->authentication_required = true; - rx_from_ran = via_ran; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("080108" "09710000000156f0"); - ms_sends_msg("0508" /* MM LU */ - "7" /* ciph key seq: no key available */ - "0" /* LU type: normal */ - "ffffff" "0000" /* LAI, LAC */ - "57" /* classmark 1: R99, early classmark, no power lvl */ - "089910070000106005" /* IMSI */ - "3303575886" /* classmark 2 */ - ); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* based on auc_3g: - * K = 'EB215756028D60E3275E613320AEC880', - * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308' - * SQN = 0 - */ - auth_request_sent = false; - auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d"; - auth_request_expect_autn = "8704f5ba55f30000d2ee44b22c8ea919"; - gsup_rx("0a" - /* imsi */ - "0108" "09710000000156f0" - /* auth vectors... */ - /* TL TL rand */ - "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" - /* TL sres TL kc */ - "2104" "9b36efdf" "2208" "059a4f668f6fbe39" - /* TL 3G IK */ - "2310" "27497388b6cb044648f396aa155b95ef" - /* TL 3G CK */ - "2410" "f64735036e5871319c679f4742a75ea1" - /* TL AUTN */ - "2510" "8704f5ba55f30000d2ee44b22c8ea919" - /* TL RES */ - "2708" "e229c19e791f2e41" - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - /* The AUTN sent was 8704f5ba55f30000d2ee44b22c8ea919 - * (see expected error output) - * with the first 6 bytes being SQN ^ AK. - * K = EB215756028D60E3275E613320AEC880 - * OPC = FB2A3D1B360F599ABAB99DB8669F8308 - * RAND = 39fa2f4e3d523d8619a73b4f65c3e14d - * --milenage-f5--> - * AK = 8704f5ba55f3 - * - * The first six bytes are 8704f5ba55f3, - * and 8704f5ba55f3 ^ AK = 0. - * --> SQN = 0. - * - * Say the USIM doesn't like that, let's say it is at SQN 23. - * SQN_MS = 000000000017 - * - * AUTS = Conc(SQN_MS) || MAC-S - * Conc(SQN_MS) = SQN_MS ⊕ f5*[K](RAND) - * MAC-S = f1*[K] (SQN MS || RAND || AMF) - * - * f5*--> Conc(SQN_MS) = 000000000017 ^ 979498b1f73a - * = 979498b1f72d - * AMF = 0000 (TS 33.102 v7.0.0, 6.3.3) - * - * MAC-S = f1*[K] (000000000017 || 39fa2f4e3d523d8619a73b4f65c3e14d || 0000) - * = 3e28c59fa2e72f9c - * - * AUTS = 979498b1f72d || 3e28c59fa2e72f9c - */ -#if RECALC_AUTS - uint8_t ak[6]; - uint8_t akstar[6]; - uint8_t opc[16]; - uint8_t k[16]; - uint8_t rand[16]; - osmo_hexparse("EB215756028D60E3275E613320AEC880", k, sizeof(k)); - osmo_hexparse("FB2A3D1B360F599ABAB99DB8669F8308", opc, sizeof(opc)); - osmo_hexparse("39fa2f4e3d523d8619a73b4f65c3e14d", rand, sizeof(rand)); - milenage_f2345(opc, k, rand, NULL, NULL, NULL, ak, akstar); - btw("ak = %s", osmo_hexdump_nospc(ak, sizeof(ak))); - btw("akstar = %s", osmo_hexdump_nospc(akstar, sizeof(akstar))); - - uint8_t sqn_ms[6] = { 0, 0, 0, 0, 0, 23 }; - uint8_t amf[2] = { 0 }; - uint8_t mac_s[8]; - milenage_f1(opc, k, rand, sqn_ms, amf, NULL, mac_s); - btw("mac_s = %s", osmo_hexdump_nospc(mac_s, sizeof(mac_s))); - /* verify valid AUTS resulting in SQN 23 with: - * osmo-auc-gen -3 -a milenage -k EB215756028D60E3275E613320AEC880 \ - * -o FB2A3D1B360F599ABAB99DB8669F8308 \ - * -r 39fa2f4e3d523d8619a73b4f65c3e14d \ - * -A 979498b1f72d3e28c59fa2e72f9c - */ -#endif - - btw("MS sends Authen Failure with Resync cause, VLR sends GSUP to HLR to resync"); - auth_request_sent = false; - gsup_expect_tx("08" /* OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST */ - "0108" "09710000000156f0" /* IMSI */ - "260e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */ - "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" /* RAND */); - ms_sends_msg("051c" /* 05 = MM; 1c = Auth Failure */ - "15" /* cause = Synch Failure */ - "220e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */); - VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR replies with new tuples"); - auth_request_sent = false; - auth_request_expect_rand = "0f1feb1623e1bf626334e37ec448ac18"; - auth_request_expect_autn = "02a83f62e9470000660d51afc75f169d"; - gsup_rx("0a" - /* imsi */ - "0108" "09710000000156f0" - /* 1 auth vector */ - /* TL TL rand */ - "0362" "2010" "0f1feb1623e1bf626334e37ec448ac18" - /* TL sres TL kc */ - "2104" "efde99da" "2208" "14778c855c523730" - /* TL 3G IK */ - "2310" "8a90c769b7272f3bb7a1c1fbb1ea9349" - /* TL 3G CK */ - "2410" "43ffc1cf8c89a7fd6ab94bd8d6162cbf" - /* TL AUTN */ - "2510" "02a83f62e9470000660d51afc75f169d" - /* TL RES */ - "2708" "1df5f0b4f22b696e" - ,NULL); - - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000000156f0"); - ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000000156f00804032443f2", - "12010809710000000156f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000000156f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); -} - -void test_umts_authen_resync_geran() -{ - comment_start(); - _test_umts_authen_resync(RAN_GERAN_A); - comment_end(); -} - -void test_umts_authen_resync_utran() -{ - comment_start(); - _test_umts_authen_resync(RAN_UTRAN_IU); - comment_end(); -} - -void test_gsm_milenage_authen() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000010650"; - - comment_start(); - - net->authentication_required = true; - rx_from_ran = RAN_GERAN_A; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("080108" "09710000000156f0"); - ms_sends_msg("0508" /* MM LU */ - "7" /* ciph key seq: no key available */ - "0" /* LU type: normal */ - "ffffff" "0000" /* LAI, LAC */ - "30" /* classmark 1: GSM phase 2 */ - "089910070000106005" /* IMSI */ - ); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* based on auc_3g: - * K = 'EB215756028D60E3275E613320AEC880', - * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308' - * SQN = 0 - */ - auth_request_sent = false; - auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d"; - auth_request_expect_autn = NULL; - gsup_rx("0a" - /* imsi */ - "0108" "09710000000156f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" - /* TL sres TL kc */ - "2104" "9b36efdf" "2208" "059a4f668f6fbe39" - /* TL 3G IK */ - "2310" "27497388b6cb044648f396aa155b95ef" - /* TL 3G CK */ - "2410" "f64735036e5871319c679f4742a75ea1" - /* TL AUTN */ - "2510" "8704f5ba55f30000d2ee44b22c8ea919" - /* TL RES */ - "2708" "e229c19e791f2e41" - "0362" "2010" "c187a53a5e6b9d573cac7c74451fd46d" - "2104" "85aa3130" "2208" "d3d50a000bf04f6e" - "2310" "1159ec926a50e98c034a6b7d7c9f418d" - "2410" "df3a03d9ca5335641efc8e36d76cd20b" - "2510" "1843a645b98d00005b2d666af46c45d9" - "2708" "7db47cf7f81e4dc7" - "0362" "2010" "efa9c29a9742148d5c9070348716e1bb" - "2104" "69d5f9fb" "2208" "3df176f0c29f1a3d" - "2310" "eb50e770ddcc3060101d2f43b6c2b884" - "2410" "76542abce5ff9345b0e8947f4c6e019c" - "2510" "f9375e6d41e1000096e7fe4ff1c27e39" - "2708" "706f996719ba609c" - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000000156f0"); - ms_sends_msg("0554" "9b36efdf"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000000156f00804032443f2", - "12010809710000000156f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000000156f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); - auth_request_sent = false; - auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d"; - auth_request_expect_autn = NULL; - cm_service_result_sent = RES_NONE; - ms_sends_msg("052478" - "03305886" /* classmark 2: GSM phase 2 */ - "089910070000106005" /* IMSI */); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts with a CM Service Accept"); - gsup_expect_tx(NULL); - ms_sends_msg("0554" "85aa3130"); /* 2nd vector's sres, s.a. */ - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 42342\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_imsi(imsi); - paging_sent = false; - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response, and VLR sends Auth Request with third key"); - auth_request_sent = false; - auth_request_expect_rand = "efa9c29a9742148d5c9070348716e1bb"; - auth_request_expect_autn = NULL; - ms_sends_msg("062707" - "03305886" /* classmark 2 */ - "089910070000106005" /* IMSI */); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends Authen Response, VLR accepts and sends pending SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05802443f2" /* originating address 42342 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("0554" "69d5f9fb"); /* 3nd vector's sres, s.a. */ - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130" - "089910070000106005" /* IMSI */); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_ciph, - test_ciph_tmsi, - test_ciph_imei, - test_ciph_imeisv, - test_ciph_tmsi_imei, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err deleted file mode 100644 index f48a9cdc7..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ /dev/null @@ -1,1647 +0,0 @@ -===== test_ciph -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 - auth_request_sent == 1 -- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR IMSI:901700000004620: CIPHERING MODE COMPLETE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and... -- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b -- ...expecting sres=20bde240 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - auth_request_sent == 1 - cm_service_result_sent == 0 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and requests Ciphering - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: 20 bd e2 40 -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=07fa7502e07e1c00 retrieve_imeisv=0 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 0 - cipher_mode_cmd_sent == 1 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR MSISDN:46071: CIPHERING MODE COMPLETE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request - cm_service_result_sent == 0 -- a USSD request is serviced - expecting USSD: - Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:46071: MSISDN = 46071 -DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d -- DTAP matches expected message -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- MS replies with Paging Response, and VLR sends Auth Request with third key - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and... -- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42 -- ...expecting sres=a29514ae -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and requests Ciphering - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: a2 95 14 ae -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=e2b234f807886400 retrieve_imeisv=0 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - cipher_mode_cmd_sent == 1 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR MSISDN:46071: CIPHERING MODE COMPLETE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DREF MSISDN:46071: MSC conn use + 1 == 2 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS - dtap_tx_confirmed == 1 - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:46071 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_ciph: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_ciph_tmsi -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - auth_request_sent == 1 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR IMSI:901700000004620: CIPHERING MODE COMPLETE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:46071, with TMSI 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -- Subscriber has the new TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0xffffffff - vsub->tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and... -- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b -- ...expecting sres=20bde240 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - auth_request_sent == 1 - cm_service_result_sent == 0 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and requests Ciphering - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: 20 bd e2 40 -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=07fa7502e07e1c00 retrieve_imeisv=0 -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 0 - cipher_mode_cmd_sent == 1 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR MSISDN:46071: CIPHERING MODE COMPLETE -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request - cm_service_result_sent == 0 -- a USSD request is serviced - expecting USSD: - Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:46071: MSISDN = 46071 -DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d -- DTAP matches expected message -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0 - paging_expecting_tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(TMSI)=50462976 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and... -- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42 -- ...expecting sres=a29514ae -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and requests Ciphering - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: a2 95 14 ae -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(50462976) -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=e2b234f807886400 retrieve_imeisv=0 -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - cipher_mode_cmd_sent == 1 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR MSISDN:46071: CIPHERING MODE COMPLETE -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DREF MSISDN:46071: MSC conn use + 1 == 2 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS - dtap_tx_confirmed == 1 - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:46071 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches, using TMSI - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_ciph_tmsi: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_ciph_imei -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR IMSI:901700000004620: CIPHERING MODE COMPLETE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI -DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- We will only do business when the IMEI is known - llist_count(&net->subscr_conns) == 1 -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->imei[0] == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS replies with an Identity Response - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19) -DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -- Subscriber has the IMEI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - strcmp(vsub->imei, "423423423423423") == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_ciph_imei: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_ciph_imeisv -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=1 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - cipher_mode_cmd_sent == 1 - cipher_mode_cmd_sent_with_imeisv == 1 - lu_result_sent == 0 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 - vsub->imeisv[0] == 0 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -- MS sends Ciphering Mode Complete with IMEISV, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR IMSI:901700000004620: CIPHERING MODE COMPLETE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: got IMEISV: 4234234234234235F -DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234235 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA - lu_result_sent == 0 -- Subscriber has the IMEISV -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 - strcmp(vsub->imeisv, "4234234234234235") == 0 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS replies with an Identity Response - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19) -DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_ID_IMEI -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Event VLR_ULA_E_ID_IMEI not permitted -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_ciph_imeisv: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_ciph_tmsi_imei -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- needs ciph, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL -DRR IMSI:901700000004620: CIPHERING MODE COMPLETE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI -DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- We will only do business when the IMEI is known - llist_count(&net->subscr_conns) == 1 -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->imei[0] == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS replies with an Identity Response - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19) -DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:46071, with TMSI 0x03020100 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -- Subscriber has the IMEI and TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - strcmp(vsub->imei, "423423423423423") == 0 - vsub->tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- subscriber detaches, using TMSI - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(TMSI)=50462976 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_ciph_tmsi_imei: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.ok b/tests/msc_vlr/msc_vlr_test_gsm_ciph.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.c b/tests/msc_vlr/msc_vlr_test_hlr_reject.c deleted file mode 100644 index c4cf3534a..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.c +++ /dev/null @@ -1,425 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -void test_hlr_rej_auth_info_unknown_imsi() -{ - comment_start(); - - net->authentication_required = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI"); - auth_request_sent = false; - gsup_rx("09" "010809710000004026f0" "020102", NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_hlr_rej_auth_info_net_fail() -{ - comment_start(); - - net->authentication_required = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _SEND_AUTH_INFO_ERROR = net fail"); - auth_request_sent = false; - gsup_rx("09" "010809710000004026f0" "020111", NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_hlr_rej_auth_info_net_fail_no_reuse_tuples() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - net->authentication_required = true; - net->vlr->cfg.auth_reuse_old_sets_on_error = false; - net->vlr->cfg.auth_tuple_max_use_count = 0; - - BTW("Submit a used auth tuple in the VLR"); - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - - BTW("Now one auth tuple is available, but used."); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - OSMO_ASSERT(vsub->last_tuple); - VERBOSE_ASSERT(vsub->last_tuple->use_count, == 1, "%d"); - /* no need to look at all auth tuples, the ongoing test would take an - * unexpected course if there were more. */ - vlr_subscr_put(vsub); - - BTW("Another LU wants to get new tuples; HLR sends Network Failure, we reject."); - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _SEND_AUTH_INFO_ERROR = net fail"); - auth_request_sent = false; - gsup_rx("09" "010809710000004026f0" "020111", NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - net->authentication_required = true; - net->vlr->cfg.auth_reuse_old_sets_on_error = true; - net->vlr->cfg.auth_tuple_max_use_count = 0; - - BTW("Submit a used auth tuple in the VLR"); - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - - BTW("Now one auth tuple is available, but used."); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - OSMO_ASSERT(vsub->last_tuple); - VERBOSE_ASSERT(vsub->last_tuple->use_count, == 1, "%d"); - /* no need to look at all auth tuples, the ongoing test would take an - * unexpected course if there were more. */ - vlr_subscr_put(vsub); - - BTW("Another LU wants to get new tuples; HLR sends IMSI Unknown. Even though we would re-use an old tuple, reject the unknown IMSI."); - VERBOSE_ASSERT(net->vlr->cfg.auth_reuse_old_sets_on_error, == true, "%d"); - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI"); - auth_request_sent = false; - gsup_rx("09" "010809710000004026f0" "020102", NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_hlr_acc_but_no_auth_tuples() -{ - comment_start(); - - net->authentication_required = true; - net->vlr->cfg.auth_reuse_old_sets_on_error = true; - net->vlr->cfg.auth_tuple_max_use_count = 0; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT but it lacks auth tuples"); - auth_request_sent = false; - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* NO auth vectors */ - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_hlr_rej_auth_info_net_fail_reuse_tuples() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - comment_start(); - - net->authentication_required = true; - net->vlr->cfg.auth_reuse_old_sets_on_error = true; - net->vlr->cfg.auth_tuple_max_use_count = 0; - - BTW("Submit a used auth tuple in the VLR"); - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - - BTW("Now one auth tuple is available, but used."); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - OSMO_ASSERT(vsub->last_tuple); - VERBOSE_ASSERT(vsub->last_tuple->use_count, == 1, "%d"); - /* no need to look at all auth tuples, the ongoing test would take an - * unexpected course if there were more. */ - vlr_subscr_put(vsub); - - BTW("Another LU wants to get new tuples; even though HLR sends Network Failure, we are reusing the old tuples."); - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _SEND_AUTH_INFO_ERROR = net fail"); - auth_request_sent = false; - gsup_rx("09" "010809710000004026f0" "020111", NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -void test_hlr_rej_lu() -{ - comment_start(); - - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends UPDATE_LOCATION_ERROR"); - gsup_rx("05" "010809710000004026f0" "020102", - NULL); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -void test_hlr_no_insert_data() -{ - comment_start(); - - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends only _UPDATE_LOCATION_RESULT, no INSERT DATA"); - gsup_rx("06010809710000004026f0", NULL); - - /* TODO should we wait for OSMO_GSUP_MSGT_INSERT_DATA_REQUEST? */ - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_hlr_rej_auth_info_unknown_imsi, - test_hlr_rej_auth_info_net_fail, - test_hlr_rej_auth_info_net_fail_reuse_tuples, - test_hlr_rej_auth_info_net_fail_no_reuse_tuples, - test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples, - test_hlr_acc_but_no_auth_tuples, - test_hlr_rej_lu, - test_hlr_no_insert_data, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err deleted file mode 100644 index e54824cf5..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ /dev/null @@ -1,1132 +0,0 @@ -===== test_hlr_rej_auth_info_unknown_imsi -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020102 -DVLR GSUP rx 14: 09010809710000004026f0020102 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_UNKNOWN_SUBSCR -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -- sending LU Reject for IMSI:901700000004620, cause 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF IMSI:901700000004620: MSC conn use - 1 == 0 -DRLL subscr IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 -DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - llist_count(&net->subscr_conns) == 0 -===== test_hlr_rej_auth_info_unknown_imsi: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_hlr_rej_auth_info_net_fail -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _SEND_AUTH_INFO_ERROR = net fail -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111 -DVLR GSUP rx 14: 09010809710000004026f0020111 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -- sending LU Reject for IMSI:901700000004620, cause 17 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF IMSI:901700000004620: MSC conn use - 1 == 0 -DRLL subscr IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 -DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - llist_count(&net->subscr_conns) == 0 -===== test_hlr_rej_auth_info_net_fail: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_hlr_rej_auth_info_net_fail_reuse_tuples ---- -- Submit a used auth tuple in the VLR -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800 -DVLR GSUP rx 47: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 1 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- Now one auth tuple is available, but used. -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->last_tuple->use_count == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- Another LU wants to get new tuples; even though HLR sends Network Failure, we are reusing the old tuples. -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _SEND_AUTH_INFO_ERROR = net fail -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111 -DVLR GSUP rx 14: 09010809710000004026f0020111 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=2 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:46071) received res: 2d 8b 2c 3e -DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples ---- -- Submit a used auth tuple in the VLR -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800 -DVLR GSUP rx 47: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 1 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- Now one auth tuple is available, but used. -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->last_tuple->use_count == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- Another LU wants to get new tuples; HLR sends Network Failure, we reject. -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _SEND_AUTH_INFO_ERROR = net fail -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111 -DVLR GSUP rx 14: 09010809710000004026f0020111 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -- sending LU Reject for MSISDN:46071, cause 17 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples ---- -- Submit a used auth tuple in the VLR -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800 -DVLR GSUP rx 47: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 1 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- Now one auth tuple is available, but used. -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->last_tuple->use_count == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- Another LU wants to get new tuples; HLR sends IMSI Unknown. Even though we would re-use an old tuple, reject the unknown IMSI. - net->vlr->cfg.auth_reuse_old_sets_on_error == 1 -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020102 -DVLR GSUP rx 14: 09010809710000004026f0020102 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_UNKNOWN_SUBSCR -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -- sending LU Reject for MSISDN:46071, cause 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_hlr_acc_but_no_auth_tuples -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT but it lacks auth tuples -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f0 -DVLR GSUP rx 11: 0a010809710000004026f0 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -- sending LU Reject for IMSI:901700000004620, cause 17 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF IMSI:901700000004620: MSC conn use - 1 == 0 -DRLL subscr IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 -DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 0 - lu_result_sent == 2 - llist_count(&net->subscr_conns) == 0 -===== test_hlr_acc_but_no_auth_tuples: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_hlr_rej_lu -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends UPDATE_LOCATION_ERROR -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: 05010809710000004026f0020102 -DVLR GSUP rx 14: 05010809710000004026f0020102 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR SUBSCR(IMSI:901700000004620) UpdateLocation failed; gmm_cause: IMSI unknown in HLR -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_NACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -- sending LU Reject for IMSI:901700000004620, cause 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF IMSI:901700000004620: MSC conn use - 1 == 0 -DRLL subscr IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 -DREF freeing VLR subscr IMSI:901700000004620 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 2 - llist_count(&net->subscr_conns) == 0 -===== test_hlr_rej_lu: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_hlr_no_insert_data -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends only _UPDATE_LOCATION_RESULT, no INSERT DATA -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for IMSI:901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF IMSI:901700000004620: MSC conn use - 1 == 0 -DRLL subscr IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr IMSI:901700000004620 -===== test_hlr_no_insert_data: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.ok b/tests/msc_vlr/msc_vlr_test_hlr_reject.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c deleted file mode 100644 index 2872f0cf4..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -#include - -void test_hlr_timeout_lu_auth_info() -{ - comment_start(); - - fake_time_start(); - - net->authentication_required = true; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - BTW("HLR never replies"); - - btw("At first, we're still waiting"); - fake_time_passes(0, 423); - EXPECT_CONN_COUNT(1); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - fake_time_passes(1, 235); - btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); - EXPECT_CONN_COUNT(0); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - - clear_vlr(); - comment_end(); -} - -void test_hlr_timeout_lu_upd_loc_result() -{ - comment_start(); - - fake_time_start(); - - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - BTW("HLR never sends GSUP _UPDATE_LOCATION_RESULT"); - - btw("At first, we're still waiting"); - fake_time_passes(0, 423); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); - EXPECT_CONN_COUNT(0); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - - clear_vlr(); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_hlr_timeout_lu_auth_info, - test_hlr_timeout_lu_upd_loc_result, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err deleted file mode 100644 index dee4bfbbc..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ /dev/null @@ -1,183 +0,0 @@ -===== test_hlr_timeout_lu_auth_info -- Total time passed: 0.000000 s -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 ---- -- HLR never replies -- At first, we're still waiting -- Total time passed: 0.000423 s - llist_count(&net->subscr_conns) == 1 -- Total time passed: 1.000658 s - llist_count(&net->subscr_conns) == 1 -- Total time passed: 2.000893 s - llist_count(&net->subscr_conns) == 1 -- Total time passed: 3.001128 s - llist_count(&net->subscr_conns) == 1 -- Total time passed: 4.001363 s - llist_count(&net->subscr_conns) == 1 -- Total time passed: 5.001598 s -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out -- sending LU Reject for IMSI:901700000004620, cause 22 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF IMSI:901700000004620: MSC conn use - 1 == 0 -DRLL subscr IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 -DREF freeing VLR subscr IMSI:901700000004620 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - llist_count(&net->subscr_conns) == 0 - lu_result_sent == 2 -===== test_hlr_timeout_lu_auth_info: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_hlr_timeout_lu_upd_loc_result -- Total time passed: 0.000000 s -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 ---- -- HLR never sends GSUP _UPDATE_LOCATION_RESULT -- At first, we're still waiting -- Total time passed: 0.000423 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 1.000658 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 2.000893 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 3.001128 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 4.001363 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 5.001598 s -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Connection timed out -- sending LU Reject for MSISDN:46071, cause 22 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - llist_count(&net->subscr_conns) == 0 - lu_result_sent == 2 -===== test_hlr_timeout_lu_upd_loc_result: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.ok b/tests/msc_vlr/msc_vlr_test_hlr_timeout.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c deleted file mode 100644 index 47ca9678f..000000000 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c +++ /dev/null @@ -1,183 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -void test_ms_timeout_lu_auth_resp() -{ - comment_start(); - - net->authentication_required = true; - - fake_time_start(); - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - BTW("MS fails to send an Authentication Response"); - - btw("At first, we're still waiting"); - fake_time_passes(0, 423); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); - EXPECT_CONN_COUNT(0); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - - comment_end(); -} - -void test_ms_timeout_cm_auth_resp() -{ - comment_start(); - - net->authentication_required = true; - - fake_time_start(); - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("08010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - auth_request_sent = false; - auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b"; - auth_request_expect_autn = NULL; - /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */ - gsup_rx("0a" - /* imsi */ - "0108" "09710000004026f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0322" "2010" "585df1ae287f6e273dce07090d61320b" - /* TL sres TL kc */ - "2104" "2d8b2c3e" "2208" "61855fb81fc2a800" - "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b" - "2104" "20bde240" "2208" "07fa7502e07e1c00" - "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42" - "2104" "a29514ae" "2208" "e2b234f807886400" - "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51" - "2104" "5afc8d72" "2208" "2392f14f709ae000" - "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc" - "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("05542d8b2c3e"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); - auth_request_sent = false; - auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b"; - cm_service_result_sent = RES_NONE; - ms_sends_msg("05247803305886089910070000006402"); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - BTW("MS fails to send an Authentication Response"); - - btw("At first, we're still waiting"); - fake_time_passes(0, 423); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - fake_time_passes(1, 235); - btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); - EXPECT_CONN_COUNT(0); - VERBOSE_ASSERT(cm_service_result_sent, == RES_REJECT, "%d"); - - clear_vlr(); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_ms_timeout_lu_auth_resp, - test_ms_timeout_cm_auth_resp, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err deleted file mode 100644 index 8439def81..000000000 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ /dev/null @@ -1,333 +0,0 @@ -===== test_ms_timeout_lu_auth_resp -- Total time passed: 0.000000 s -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800 -DVLR GSUP rx 47: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 1 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 ---- -- MS fails to send an Authentication Response -- At first, we're still waiting -- Total time passed: 0.000423 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 1.000658 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 2.000893 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 3.001128 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 4.001363 s - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 0 -- Total time passed: 5.001598 s -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out -- sending LU Reject for IMSI:901700000004620, cause 22 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF IMSI:901700000004620: MSC conn use - 1 == 0 -DRLL subscr IMSI:901700000004620: Freeing subscriber connection -DREF VLR subscr IMSI:901700000004620 usage decreases to: 0 -DREF freeing VLR subscr IMSI:901700000004620 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - llist_count(&net->subscr_conns) == 0 - lu_result_sent == 2 -===== test_ms_timeout_lu_auth_resp: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_ms_timeout_cm_auth_resp -- Total time passed: 0.000000 s -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and... -- ...rand=585df1ae287f6e273dce07090d61320b -- ...expecting sres=2d8b2c3e -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e -DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and... -- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b -- ...expecting sres=20bde240 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 0 - auth_request_sent == 1 ---- -- MS fails to send an Authentication Response -- At first, we're still waiting -- Total time passed: 0.000423 s - llist_count(&net->subscr_conns) == 1 - cm_service_result_sent == 0 -- Total time passed: 1.000658 s - llist_count(&net->subscr_conns) == 1 - cm_service_result_sent == 0 -- Total time passed: 2.000893 s - llist_count(&net->subscr_conns) == 1 - cm_service_result_sent == 0 -- Total time passed: 3.001128 s - llist_count(&net->subscr_conns) == 1 - cm_service_result_sent == 0 -- Total time passed: 4.001363 s - llist_count(&net->subscr_conns) == 1 - cm_service_result_sent == 0 -- Total time passed: 5.001598 s -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Connection timed out -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_TIMEOUT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_TIMEOUT -- sending CM Service Reject for MSISDN:46071, result VLR_PR_ARQ_RES_TIMEOUT -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Removing from parent Process_Access_Request_VLR(901700000004620) -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Freeing instance -DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Deallocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted -- SUBSCR_CONN_TIMEOUT has passed, conn is gone. - llist_count(&net->subscr_conns) == 0 - cm_service_result_sent == 2 -DREF freeing VLR subscr MSISDN:46071 -===== test_ms_timeout_cm_auth_resp: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.ok b/tests/msc_vlr/msc_vlr_test_ms_timeout.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c deleted file mode 100644 index f5e2e2b62..000000000 --- a/tests/msc_vlr/msc_vlr_test_no_authen.c +++ /dev/null @@ -1,508 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -void test_no_authen() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - /* No auth only works on GERAN */ - rx_from_ran = RAN_GERAN_A; - - comment_start(); - - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - - thwart_rx_non_initial_requests(); - - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("after a while, a new conn sends a CM Service Request"); - cm_service_result_sent = RES_NONE; - ms_sends_msg("05247803305886089910070000006402"); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(true); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 46071\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_imsi(imsi); - paging_sent = false; - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response, we deliver the SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05806470f1" /* originating address 46071 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("06270703305882089910070000006402"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_no_authen_tmsi() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - rx_from_ran = RAN_GERAN_A; - - comment_start(); - - net->vlr->cfg.assign_tmsi = true; - - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the new TMSI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("after a while, a new conn sends a CM Service Request using above TMSI"); - cm_service_result_sent = RES_NONE; - ms_sends_msg("05247803305886" "05f4" "03020100"); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(true); - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 46071\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged using above TMSI"); - paging_expect_tmsi(0x03020100); - paging_sent = false; - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response using TMSI, we deliver the SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05806470f1" /* originating address 46071 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("06270703305882" "05f4" "03020100"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - /* TODO: when the subscriber detaches, the vlr_subscr gets - * deallocated and we no longer know the TMSI. This case is covered by - * test_lu_unknown_tmsi(), so here I'd like to still have the TMSI. - BTW("subscriber detaches, using TMSI"); - ms_sends_msg("050130" "05f4" "03020100"); - EXPECT_CONN_COUNT(0); - */ - - BTW("subscriber sends LU Request, this time with the TMSI"); - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130" "05f4" "03020100"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x07060504); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x07060504, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - btw("subscriber has the new TMSI"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x07060504); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == 0x07060504, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches, using new TMSI"); - ms_sends_msg("050130" "05f4" "07060504"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_no_authen_imei() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - rx_from_ran = RAN_GERAN_A; - - comment_start(); - - net->vlr->cfg.check_imei_rqd = true; - - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS"); - dtap_expect_tx("051802"); - gsup_rx("06010809710000004026f0", NULL); - - btw("We will only do business when the IMEI is known"); - EXPECT_CONN_COUNT(1); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(vsub->imei[0], == 0, "%d"); - vlr_subscr_put(vsub); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS replies with an Identity Response"); - ms_sends_msg("0559084a32244332244332"); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the IMEI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_no_authen_tmsi_imei() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - rx_from_ran = RAN_GERAN_A; - - comment_start(); - - net->vlr->cfg.assign_tmsi = true; - net->vlr->cfg.check_imei_rqd = true; - - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS"); - dtap_expect_tx("051802"); - gsup_rx("06010809710000004026f0", NULL); - - btw("We will only do business when the IMEI is known"); - EXPECT_CONN_COUNT(1); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(vsub->imei[0], == 0, "%d"); - vlr_subscr_put(vsub); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS replies with an Identity Response"); - ms_sends_msg("0559084a32244332244332"); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - btw("Subscriber has the IMEI and TMSI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_no_authen, - test_no_authen_tmsi, - test_no_authen_imei, - test_no_authen_tmsi_imei, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err deleted file mode 100644 index 405cc1d7a..000000000 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ /dev/null @@ -1,1165 +0,0 @@ -===== test_no_authen -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- having received subscriber data does not mean acceptance -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- after a while, a new conn sends a CM Service Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -msc_subscr_conn_is_accepted() == true -- a USSD request is serviced - expecting USSD: - Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:46071: MSISDN = 46071 -DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d -- DTAP matches expected message -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- MS replies with Paging Response, we deliver the SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 6 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 5 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:46071 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_no_authen: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_no_authen_tmsi -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- having received subscriber data does not mean acceptance -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:46071, with TMSI 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -- Subscriber has the new TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0xffffffff - vsub->tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- after a while, a new conn sends a CM Service Request using above TMSI - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -msc_subscr_conn_is_accepted() == true -- a USSD request is serviced - expecting USSD: - Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:46071: MSISDN = 46071 -DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d -- DTAP matches expected message -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged using above TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0 - paging_expecting_tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -- MS replies with Paging Response using TMSI, we deliver the SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(TMSI)=50462976 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 6 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 5 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:46071 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976) -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber sends LU Request, this time with the TMSI -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: is child of Subscr_Conn(50462976) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(50462976) -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- having received subscriber data does not mean acceptance -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(50462976) -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(50462976) -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(50462976) -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(50462976) -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:46071, with TMSI 0x07060504 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:46071 usage increases to: 3 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x07060504 - vsub->tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071 -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(50462976) -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(50462976) -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -- subscriber has the new TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0xffffffff - vsub->tmsi == 0x07060504 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- subscriber detaches, using new TMSI - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(TMSI)=117835012 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_no_authen_tmsi: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_no_authen_imei -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- having received subscriber data does not mean acceptance -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI -DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- We will only do business when the IMEI is known - llist_count(&net->subscr_conns) == 1 -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->imei[0] == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS replies with an Identity Response - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19) -DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -- Subscriber has the IMEI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - strcmp(vsub->imei, "423423423423423") == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_no_authen_imei: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_no_authen_tmsi_imei -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- having received subscriber data does not mean acceptance -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI -DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- We will only do business when the IMEI is known - llist_count(&net->subscr_conns) == 1 -DREF VLR subscr MSISDN:46071 usage increases to: 2 - vsub->imei[0] == 0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS replies with an Identity Response - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19) -DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:46071, with TMSI 0x03020100 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 - lu_result_sent == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -- Subscriber has the IMEI and TMSI -DREF VLR subscr MSISDN:46071 usage increases to: 2 - strcmp(vsub->imei, "423423423423423") == 0 - vsub->tmsi == 0x03020100 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_no_authen_tmsi_imei: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.ok b/tests/msc_vlr/msc_vlr_test_no_authen.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_no_authen.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c deleted file mode 100644 index 15988584a..000000000 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c +++ /dev/null @@ -1,379 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -void test_reject_2nd_conn() -{ - struct gsm_subscriber_connection *conn1; - comment_start(); - - btw("Location Update Request on one connection"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - EXPECT_CONN_COUNT(1); - - btw("Another Location Update Request from the same subscriber on another connection is rejected"); - conn1 = g_conn; - g_conn = NULL; - ms_sends_msg("050802008168000130089910070000006402"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - EXPECT_CONN_COUNT(1); - - - BTW("The first connection can still complete its LU"); - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - g_conn = conn1; - lu_result_sent = RES_NONE; - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -void _normal_lu_part1() -{ - btw("Location Update Request"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - EXPECT_CONN_COUNT(1); -} - -void _normal_lu_part2() -{ - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - lu_result_sent = RES_NONE; - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); -} - -void _normal_lu() -{ - BTW("Subscriber does a normal LU"); - _normal_lu_part1(); - _normal_lu_part2(); -} - -void _normal_cm_service_req() -{ - BTW("Subscriber does a normal CM Service Request"); - cm_service_result_sent = RES_NONE; - ms_sends_msg("05247803305886089910070000006402"); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - EXPECT_ACCEPTED(true); -} - -void _page() -{ - const char *imsi = "901700000004620"; - struct vlr_subscr *vsub; - - BTW("an SMS is sent, MS is paged"); - paging_expect_imsi(imsi); - paging_sent = false; - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); -} - -void _paging_resp_part1() -{ - btw("MS replies with Paging Response, we deliver the SMS"); - dtap_expect_tx("09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05806470f1" /* originating address 46071 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"); - ms_sends_msg("06270703305882089910070000006402"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); -} - -void _paging_resp_part2(int expect_conn_count) -{ - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done"); - EXPECT_CONN_COUNT(expect_conn_count); -} - -void test_reject_lu_during_lu() -{ - comment_start(); - - _normal_lu_part1(); - - BTW("Another Location Update Request from the same subscriber on the same conn is dropped silently"); - ms_sends_msg("050802008168000130089910070000006402"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - EXPECT_CONN_COUNT(1); - - BTW("The first LU can still complete"); - _normal_lu_part2(); - - clear_vlr(); - comment_end(); -} - -void test_reject_cm_during_lu() -{ - comment_start(); - - _normal_lu_part1(); - - BTW("A CM Service Request in the middle of a LU is rejected"); - cm_service_result_sent = RES_NONE; - dtap_expect_tx("052211"); - ms_sends_msg("05247803305886089910070000006402"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - EXPECT_CONN_COUNT(1); - - BTW("The first LU can still complete"); - _normal_lu_part2(); - - clear_vlr(); - comment_end(); -} - -void test_reject_paging_resp_during_lu() -{ - comment_start(); - - _normal_lu_part1(); - - BTW("An erratic Paging Response is dropped silently"); - ms_sends_msg("06270703305882089910070000006402"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - EXPECT_CONN_COUNT(1); - - BTW("The first LU can still complete"); - _normal_lu_part2(); - - clear_vlr(); - comment_end(); -} - -void test_reject_lu_during_cm() -{ - comment_start(); - - _normal_lu(); - _normal_cm_service_req(); - - btw("A LU request on an open conn is dropped silently"); - /* TODO: accept periodic LU on an already open conn? */ - lu_result_sent = RES_NONE; - ms_sends_msg("050802008168000130089910070000006402"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - EXPECT_CONN_COUNT(1); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -void test_reject_cm_during_cm() -{ - comment_start(); - - _normal_lu(); - _normal_cm_service_req(); - - btw("A second CM Service Request on the same conn is accepted without another auth dance"); - cm_service_result_sent = RES_NONE; - ms_sends_msg("05247803305886089910070000006402"); - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(1); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -void test_reject_paging_resp_during_cm() -{ - comment_start(); - - _normal_lu(); - _normal_cm_service_req(); - - BTW("An erratic Paging Response on the same conn is dropped silently"); - ms_sends_msg("06270703305882089910070000006402"); - EXPECT_CONN_COUNT(1); - - BTW("The original CM Service Request can conclude"); - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 46071\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -void test_reject_paging_resp_during_paging_resp() -{ - comment_start(); - - _normal_lu(); - _page(); - _paging_resp_part1(); - - BTW("MS sends another erratic Paging Response which is dropped silently"); - ms_sends_msg("06270703305882089910070000006402"); - - _paging_resp_part2(0); - - clear_vlr(); - comment_end(); -} - -void test_reject_lu_during_paging_resp() -{ - comment_start(); - - _normal_lu(); - _page(); - _paging_resp_part1(); - - BTW("MS sends erratic LU Request, which is dropped silently"); - lu_result_sent = RES_NONE; - ms_sends_msg("050802008168000130089910070000006402"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - EXPECT_CONN_COUNT(1); - - _paging_resp_part2(0); - - clear_vlr(); - comment_end(); -} - -void test_reject_cm_during_paging_resp() -{ - comment_start(); - - _normal_lu(); - _page(); - _paging_resp_part1(); - - BTW("CM Service Request during open connection is accepted"); - cm_service_result_sent = RES_NONE; - ms_sends_msg("05247803305886089910070000006402"); - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(1); - VERBOSE_ASSERT(g_conn->received_cm_service_request, == true, "%d"); - - _paging_resp_part2(1); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_reject_2nd_conn, - test_reject_lu_during_lu, - test_reject_cm_during_lu, - test_reject_paging_resp_during_lu, - test_reject_lu_during_cm, - test_reject_cm_during_cm, - test_reject_paging_resp_during_cm, - test_reject_lu_during_paging_resp, - test_reject_cm_during_paging_resp, - test_reject_paging_resp_during_paging_resp, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err deleted file mode 100644 index 13d8a17c3..000000000 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err +++ /dev/null @@ -1,1763 +0,0 @@ -===== test_reject_2nd_conn -- Location Update Request on one connection - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 -- Another Location Update Request from the same subscriber on another connection is rejected - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: A Location Updating process is already pending for this subscriber. Aborting. -- sending LU Reject for unknown, cause 22 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF unknown: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DRR 901700000004620: internal error during Location Updating attempt -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - lu_result_sent == 2 - llist_count(&net->subscr_conns) == 1 ---- -- The first connection can still complete its LU -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_reject_2nd_conn: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_lu_during_lu -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 ---- -- Another Location Update Request from the same subscriber on the same conn is dropped silently - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DMM 901700000004620: Error: connection already in use -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 ---- -- The first LU can still complete -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_reject_lu_during_lu: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_cm_during_lu -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 ---- -- A CM Service Request in the middle of a LU is rejected - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DMM IMSI:901700000004620: connection already in use -DMM -> CM SERVICE Reject cause: 17 -DMSC msc_tx 3 bytes to IMSI:901700000004620 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_CM_SERV_REJ: 052211 -- DTAP matches expected message -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - cm_service_result_sent == 0 - llist_count(&net->subscr_conns) == 1 ---- -- The first LU can still complete -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_reject_cm_during_lu: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_paging_resp_during_lu -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 ---- -- An erratic Paging Response is dropped silently - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP -DREF IMSI:901700000004620: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DMM 901700000004620: Error: connection already in use -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 ---- -- The first LU can still complete -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_reject_paging_resp_during_lu: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_lu_during_cm ---- -- Subscriber does a normal LU -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- Subscriber does a normal CM Service Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -msc_subscr_conn_is_accepted() == true -- A LU request on an open conn is dropped silently - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DMM 901700000004620: Error: connection already in use -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 DETACHED -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 - llist_count(&net->subscr_conns) == 0 -===== test_reject_lu_during_cm: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_cm_during_cm ---- -- Subscriber does a normal LU -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- Subscriber does a normal CM Service Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -msc_subscr_conn_is_accepted() == true -- A second CM Service Request on the same conn is accepted without another auth dance - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DMM MSISDN:46071: re-using already accepted connection -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 1 - llist_count(&net->subscr_conns) == 1 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 DETACHED -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 - llist_count(&net->subscr_conns) == 0 -===== test_reject_cm_during_cm: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_paging_resp_during_cm ---- -- Subscriber does a normal LU -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- Subscriber does a normal CM Service Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -msc_subscr_conn_is_accepted() == true ---- -- An erratic Paging Response on the same conn is dropped silently - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DMM 901700000004620: Error: connection already in use -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - llist_count(&net->subscr_conns) == 1 ---- -- The original CM Service Request can conclude -- a USSD request is serviced - expecting USSD: - Your extension is 46071 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:46071: MSISDN = 46071 -DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d -- DTAP matches expected message -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_reject_paging_resp_during_cm: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_lu_during_paging_resp ---- -- Subscriber does a normal LU -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- MS replies with Paging Response, we deliver the SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 6 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 5 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 ---- -- MS sends erratic LU Request, which is dropped silently - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DMM 901700000004620: Error: connection already in use -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_reject_lu_during_paging_resp: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_cm_during_paging_resp ---- -- Subscriber does a normal LU -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- MS replies with Paging Response, we deliver the SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 6 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 5 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 ---- -- CM Service Request during open connection is accepted - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DMM MSISDN:46071: re-using already accepted connection -- sending CM Service Accept for MSISDN:46071 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 2 - cm_service_result_sent == 1 - llist_count(&net->subscr_conns) == 1 - g_conn->received_cm_service_request == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:46071: MSC conn use - 1 == 1 - dtap_tx_confirmed == 1 -- SMS is done - llist_count(&net->subscr_conns) == 1 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND -DREF MSISDN:46071: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 DETACHED -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 - llist_count(&net->subscr_conns) == 0 -===== test_reject_cm_during_paging_resp: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_reject_paging_resp_during_paging_resp ---- -- Subscriber does a normal LU -- Location Update Request - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 - llist_count(&net->subscr_conns) == 1 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:46071 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DMM Subscriber MSISDN:46071 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:46071 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- MS replies with Paging Response, we deliver the SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:46071 usage increases to: 4 -DREF VLR subscr MSISDN:46071 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:46071 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:46071 usage increases to: 6 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 5 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF VLR subscr MSISDN:46071 usage decreases to: 4 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 ---- -- MS sends another erratic Paging Response which is dropped silently - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000004620 -DMM 901700000004620: Error: connection already in use -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:46071: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:46071: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:46071 usage decreases to: 3 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DREF MSISDN:46071: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_reject_paging_resp_during_paging_resp: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.ok b/tests/msc_vlr/msc_vlr_test_reject_concurrency.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c deleted file mode 100644 index 5ccc951be..000000000 --- a/tests/msc_vlr/msc_vlr_test_rest.c +++ /dev/null @@ -1,188 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -void test_early_stage() -{ - comment_start(); - - btw("NULL conn"); - EXPECT_ACCEPTED(false); - - btw("freshly allocated conn"); - g_conn = msc_subscr_con_allocate(net); - g_conn->bts = the_bts; - EXPECT_ACCEPTED(false); - - btw("conn_fsm present, in state NEW"); - OSMO_ASSERT(msc_create_conn_fsm(g_conn, "test") == 0); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->conn_fsm->state == SUBSCR_CONN_S_NEW); - EXPECT_ACCEPTED(false); - - thwart_rx_non_initial_requests(); - - btw("fake: acceptance"); - g_conn->vsub = vlr_subscr_alloc(net->vlr); - OSMO_ASSERT(g_conn->vsub); - /* mark as silent call so it sticks around */ - g_conn->silent_call = 1; - osmo_fsm_inst_state_chg(g_conn->conn_fsm, SUBSCR_CONN_S_ACCEPTED, 0, 0); - EXPECT_CONN_COUNT(1); - EXPECT_ACCEPTED(true); - - btw("CLOSE event marks conn_fsm as released and frees the conn"); - osmo_fsm_inst_dispatch(g_conn->conn_fsm, SUBSCR_CONN_E_CN_CLOSE, NULL); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -void test_cm_service_without_lu() -{ - comment_start(); - - btw("CM Service Request without a prior Location Updating"); - ms_sends_msg("05247803305886089910070000006402"); - - btw("conn was released"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); - comment_end(); -} - -void test_two_lu() -{ - comment_start(); - - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - - thwart_rx_non_initial_requests(); - - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - - BTW("verify that the MS can send another LU request"); - btw("Location Update request causes a GSUP LU request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - - thwart_rx_non_initial_requests(); - - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130089910070000006402"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_lu_unknown_tmsi() -{ - comment_start(); - - btw("Location Update request with unknown TMSI sends ID Request for IMSI"); - lu_result_sent = RES_NONE; - dtap_expect_tx("051801"); - ms_sends_msg("050802008168000130" "05f4" "23422342"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("MS tells us the IMSI, causes a GSUP LU request to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0559089910070000006402"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000004026f00804036470f1", - "12010809710000004026f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("having received subscriber data does not mean acceptance"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_early_stage, - test_cm_service_without_lu, - test_two_lu, - test_lu_unknown_tmsi, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err deleted file mode 100644 index bef3ba68f..000000000 --- a/tests/msc_vlr/msc_vlr_test_rest.err +++ /dev/null @@ -1,475 +0,0 @@ -===== test_early_stage -- NULL conn -msc_subscr_conn_is_accepted() == false -- freshly allocated conn -msc_subscr_conn_is_accepted() == false -- conn_fsm present, in state NEW -DREF unknown: MSC conn use + 1 == 1 -DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr unknown: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr unknown: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr unknown: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr unknown: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- fake: acceptance -DREF VLR subscr unknown usage increases to: 1 -DMM Subscr_Conn(test){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED - llist_count(&net->subscr_conns) == 1 -msc_subscr_conn_is_accepted() == true -- CLOSE event marks conn_fsm as released and frees the conn -DMM Subscr_Conn(test){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(test){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DREF unknown: MSC conn use - 1 == 0 -DRLL subscr unknown: Freeing subscriber connection -DREF VLR subscr unknown usage decreases to: 0 -DREF freeing VLR subscr unknown -DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Deallocated - llist_count(&net->subscr_conns) == 0 -===== test_early_stage: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_cm_service_without_lu -- CM Service Request without a prior Location Updating - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_UNIDENT_SUBSCR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_UNIDENT_SUBSCR -- sending CM Service Reject for unknown, result VLR_PR_ARQ_RES_UNIDENT_SUBSCR -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated -DREF unknown: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber -- conn was released - llist_count(&net->subscr_conns) == 0 -===== test_cm_service_without_lu: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_two_lu -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR New subscr, IMSI: 901700000004620 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- having received subscriber data does not mean acceptance -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- verify that the MS can send another LU request -- Location Update request causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:46071: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- having received subscriber data does not mean acceptance -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620) -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620) -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620) -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DMM Subscriber MSISDN:46071 DETACHED -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_two_lu: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_lu_unknown_tmsi -- Location Update request with unknown TMSI sends ID Request for IMSI - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(TMSI)=591536962 type=IMSI ATTACH -DMM LU/new-LAC: 1/0 -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: is child of Subscr_Conn(591536962) -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth) -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR New subscr, TMSI: 0x23422342 -DREF VLR subscr TMSI:0x23422342 usage increases to: 2 -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: vlr_loc_upd_want_imsi() -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMSI -DMSC msc_tx 3 bytes to TMSI:0x23422342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051801 -- DTAP matches expected message -DREF VLR subscr TMSI:0x23422342 usage decreases to: 1 -DMM TMSI:0x23422342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF TMSI:0x23422342: MSC conn use - 1 == 1 - lu_result_sent == 0 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS tells us the IMSI, causes a GSUP LU request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP -DREF TMSI:0x23422342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19) -DMM IDENTITY RESPONSE: MI(IMSI)=901700000004620 -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: Received Event VLR_ULA_E_ID_IMSI -DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620 -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(591536962) -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0 -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000004620: MSC conn use - 1 == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1 -DVLR GSUP rx 17: 10010809710000004026f00804036470f1 -DREF VLR subscr IMSI:901700000004620 usage increases to: 2 -DVLR IMSI:901700000004620 has MSISDN:46071 -DVLR GSUP tx: 12010809710000004026f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- having received subscriber data does not mean acceptance -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0 -DVLR GSUP rx 11: 06010809710000004026f0 -DREF VLR subscr MSISDN:46071 usage increases to: 2 -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(591536962) -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(591536962) -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(591536962) -DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(591536962) -DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -- sending LU Accept for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage increases to: 3 -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(591536962) -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(591536962) -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:46071: MSC conn use - 1 == 0 -DRLL subscr MSISDN:46071: Freeing subscriber connection -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 -- LU was successful, and the conn has already been closed - lu_result_sent == 1 - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:46071 -===== test_lu_unknown_tmsi: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_rest.ok b/tests/msc_vlr/msc_vlr_test_rest.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_rest.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c deleted file mode 100644 index d026f0229..000000000 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.c +++ /dev/null @@ -1,558 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include "msc_vlr_tests.h" - -void _test_umts_authen(enum ran_type via_ran) -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000010650"; - const char *sms = - "09" /* SMS messages */ - "01" /* CP-DATA */ - "58" /* length */ - "01" /* Network to MS */ - "00" /* reference */ - /* originator (gsm411_send_sms() hardcodes this weird nr) */ - "0791" "447758100650" /* 447785016005 */ - "00" /* dest */ - /* SMS TPDU */ - "4c" /* len */ - "00" /* SMS deliver */ - "05802443f2" /* originating address 42342 */ - "00" /* TP-PID */ - "00" /* GSM default alphabet */ - "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/ - "000000" /* H-M-S */ - "00" /* GMT+0 */ - "44" /* data length */ - "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e" - "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb" - "0c7ac3e9e9b7db05"; - - net->authentication_required = true; - net->vlr->cfg.assign_tmsi = true; - rx_from_ran = via_ran; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("080108" "09710000000156f0"); - ms_sends_msg("0508" /* MM LU */ - "7" /* ciph key seq: no key available */ - "0" /* LU type: normal */ - "ffffff" "0000" /* LAI, LAC */ - "57" /* classmark 1: R99, early classmark, no power lvl */ - "089910070000106005" /* IMSI */ - "3303575886" /* classmark 2 */ - ); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* based on auc_3g: - * K = 'EB215756028D60E3275E613320AEC880', - * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308' - * SQN = 0 - */ - auth_request_sent = false; - auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d"; - auth_request_expect_autn = "8704f5ba55f30000d2ee44b22c8ea919"; - gsup_rx("0a" - /* imsi */ - "0108" "09710000000156f0" - /* 5 auth vectors... */ - /* TL TL rand */ - "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" - /* TL sres TL kc */ - "2104" "9b36efdf" "2208" "059a4f668f6fbe39" - /* TL 3G IK */ - "2310" "27497388b6cb044648f396aa155b95ef" - /* TL 3G CK */ - "2410" "f64735036e5871319c679f4742a75ea1" - /* TL AUTN */ - "2510" "8704f5ba55f30000d2ee44b22c8ea919" - /* TL RES */ - "2708" "e229c19e791f2e41" - /* TL TL rand */ - "0362" "2010" "c187a53a5e6b9d573cac7c74451fd46d" - "2104" "85aa3130" "2208" "d3d50a000bf04f6e" - "2310" "1159ec926a50e98c034a6b7d7c9f418d" - "2410" "df3a03d9ca5335641efc8e36d76cd20b" - "2510" "1843a645b98d00005b2d666af46c45d9" - "2708" "7db47cf7f81e4dc7" - "0362" "2010" "efa9c29a9742148d5c9070348716e1bb" - "2104" "69d5f9fb" "2208" "3df176f0c29f1a3d" - "2310" "eb50e770ddcc3060101d2f43b6c2b884" - "2410" "76542abce5ff9345b0e8947f4c6e019c" - "2510" "f9375e6d41e1000096e7fe4ff1c27e39" - "2708" "706f996719ba609c" - "0362" "2010" "f023d5a3b24726e0631b64b3840f8253" - "2104" "d570c03f" "2208" "ec011be8919883d6" - "2310" "c4e58af4ba43f3bcd904e16984f086d7" - "2410" "0593f65e752e5cb7f473862bda05aa0a" - "2510" "541ff1f077270000c5ea00d658bc7e9a" - "2708" "3fd26072eaa2a04d" - "0362" "2010" "2f8f90c780d6a9c0c53da7ac57b6707e" - "2104" "b072446f220823f39f9f425ad6e6" - "2310" "65af0527fda95b0dc5ae4aa515cdf32f" - "2410" "537c3b35a3b13b08d08eeb28098f45cc" - "2510" "4bf4e564f75300009bc796706bc65744" - "2708" "0edb0eadbea94ac2", - NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - if (via_ran == RAN_GERAN_A) { - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000000156f0"); - ms_sends_msg("0554" "e229c19e" "2104" "791f2e41"); - VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - } else { - /* On UTRAN */ - btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl"); - cipher_mode_cmd_sent = false; - ms_sends_msg("0554" "e229c19e" "2104" "791f2e41"); - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000000156f0"); - ms_sends_security_mode_complete(); - VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - } - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000000156f00804032443f2", - "12010809710000000156f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000000156f0", NULL); - - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector"); - auth_request_sent = false; - auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d"; - auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9"; - cm_service_result_sent = RES_NONE; - ms_sends_msg("052478" - "03575886" /* classmark 2 */ - "089910070000106005" /* IMSI */); - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->conn_fsm); - OSMO_ASSERT(g_conn->vsub); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - if (via_ran == RAN_GERAN_A) { - btw("MS sends Authen Response, VLR accepts with a CM Service Accept"); - gsup_expect_tx(NULL); - ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */ - VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d"); - } else { - /* On UTRAN */ - btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl"); - cipher_mode_cmd_sent = false; - ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */ - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - - btw("MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept"); - ms_sends_security_mode_complete(); - VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d"); - } - - btw("a USSD request is serviced"); - dtap_expect_tx_ussd("Your extension is 42342\r"); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("all requests serviced, conn has been released"); - EXPECT_CONN_COUNT(0); - - BTW("an SMS is sent, MS is paged"); - paging_expect_imsi(imsi); - paging_sent = false; - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - - send_sms(vsub, vsub, - "Privacy in residential applications is a desirable" - " marketing option."); - - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - vsub = NULL; - VERBOSE_ASSERT(paging_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("the subscriber and its pending request should remain"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d"); - vlr_subscr_put(vsub); - - btw("MS replies with Paging Response, and VLR sends Auth Request with third key"); - auth_request_sent = false; - auth_request_expect_rand = "efa9c29a9742148d5c9070348716e1bb"; - auth_request_expect_autn = "f9375e6d41e1000096e7fe4ff1c27e39"; - ms_sends_msg("062707" - "03575886" /* classmark 2 */ - "089910070000106005" /* IMSI */); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - - btw("needs auth, not yet accepted"); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - if (via_ran == RAN_GERAN_A) { - btw("MS sends Authen Response, VLR accepts and sends pending SMS"); - dtap_expect_tx(sms); - ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */ - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - } else { - /* On UTRAN */ - btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl"); - cipher_mode_cmd_sent = false; - ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */ - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - VERBOSE_ASSERT(paging_stopped, == false, "%d"); - - btw("MS sends SecurityModeControl acceptance, VLR accepts and sends SMS"); - dtap_expect_tx(sms); - ms_sends_security_mode_complete(); - VERBOSE_ASSERT(paging_stopped, == true, "%d"); - } - - btw("SMS was delivered, no requests pending for subscr"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d"); - vlr_subscr_put(vsub); - - btw("conn is still open to wait for SMS ack dance"); - EXPECT_CONN_COUNT(1); - - btw("MS replies with CP-ACK for received SMS"); - ms_sends_msg("8904"); - EXPECT_CONN_COUNT(1); - - btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that"); - dtap_expect_tx("0904"); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - ms_sends_msg("050130" - "089910070000106005" /* IMSI */); - - EXPECT_CONN_COUNT(0); - clear_vlr(); -} - -void test_umts_authen_geran() -{ - comment_start(); - _test_umts_authen(RAN_GERAN_A); - comment_end(); -} - -void test_umts_authen_utran() -{ - comment_start(); - _test_umts_authen(RAN_UTRAN_IU); - comment_end(); -} - -#define RECALC_AUTS 0 - -#if RECALC_AUTS -typedef uint8_t u8; -extern int milenage_f2345(const u8 *opc, const u8 *k, const u8 *_rand, - u8 *res, u8 *ck, u8 *ik, u8 *ak, u8 *akstar); -extern int milenage_f1(const u8 *opc, const u8 *k, const u8 *_rand, - const u8 *sqn, const u8 *amf, u8 *mac_a, u8 *mac_s); -#endif - -void _test_umts_authen_resync(enum ran_type via_ran) -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000010650"; - - net->authentication_required = true; - net->vlr->cfg.assign_tmsi = true; - rx_from_ran = via_ran; - - btw("Location Update request causes a GSUP Send Auth Info request to HLR"); - lu_result_sent = RES_NONE; - gsup_expect_tx("080108" "09710000000156f0"); - ms_sends_msg("0508" /* MM LU */ - "7" /* ciph key seq: no key available */ - "0" /* LU type: normal */ - "ffffff" "0000" /* LAI, LAC */ - "57" /* classmark 1: R99, early classmark, no power lvl */ - "089910070000106005" /* IMSI */ - "3303575886" /* classmark 2 */ - ); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS"); - /* based on auc_3g: - * K = 'EB215756028D60E3275E613320AEC880', - * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308' - * SQN = 0 - */ - auth_request_sent = false; - auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d"; - auth_request_expect_autn = "8704f5ba55f30000d2ee44b22c8ea919"; - gsup_rx("0a" - /* imsi */ - "0108" "09710000000156f0" - /* auth vectors... */ - /* TL TL rand */ - "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" - /* TL sres TL kc */ - "2104" "9b36efdf" "2208" "059a4f668f6fbe39" - /* TL 3G IK */ - "2310" "27497388b6cb044648f396aa155b95ef" - /* TL 3G CK */ - "2410" "f64735036e5871319c679f4742a75ea1" - /* TL AUTN */ - "2510" "8704f5ba55f30000d2ee44b22c8ea919" - /* TL RES */ - "2708" "e229c19e791f2e41" - ,NULL); - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - /* The AUTN sent was 8704f5ba55f30000d2ee44b22c8ea919 - * (see expected error output) - * with the first 6 bytes being SQN ^ AK. - * K = EB215756028D60E3275E613320AEC880 - * OPC = FB2A3D1B360F599ABAB99DB8669F8308 - * RAND = 39fa2f4e3d523d8619a73b4f65c3e14d - * --milenage-f5--> - * AK = 8704f5ba55f3 - * - * The first six bytes are 8704f5ba55f3, - * and 8704f5ba55f3 ^ AK = 0. - * --> SQN = 0. - * - * Say the USIM doesn't like that, let's say it is at SQN 23. - * SQN_MS = 000000000017 - * - * AUTS = Conc(SQN_MS) || MAC-S - * Conc(SQN_MS) = SQN_MS ⊕ f5*[K](RAND) - * MAC-S = f1*[K] (SQN MS || RAND || AMF) - * - * f5*--> Conc(SQN_MS) = 000000000017 ^ 979498b1f73a - * = 979498b1f72d - * AMF = 0000 (TS 33.102 v7.0.0, 6.3.3) - * - * MAC-S = f1*[K] (000000000017 || 39fa2f4e3d523d8619a73b4f65c3e14d || 0000) - * = 3e28c59fa2e72f9c - * - * AUTS = 979498b1f72d || 3e28c59fa2e72f9c - */ -#if RECALC_AUTS - uint8_t ak[6]; - uint8_t akstar[6]; - uint8_t opc[16]; - uint8_t k[16]; - uint8_t rand[16]; - osmo_hexparse("EB215756028D60E3275E613320AEC880", k, sizeof(k)); - osmo_hexparse("FB2A3D1B360F599ABAB99DB8669F8308", opc, sizeof(opc)); - osmo_hexparse("39fa2f4e3d523d8619a73b4f65c3e14d", rand, sizeof(rand)); - milenage_f2345(opc, k, rand, NULL, NULL, NULL, ak, akstar); - btw("ak = %s", osmo_hexdump_nospc(ak, sizeof(ak))); - btw("akstar = %s", osmo_hexdump_nospc(akstar, sizeof(akstar))); - - uint8_t sqn_ms[6] = { 0, 0, 0, 0, 0, 23 }; - uint8_t amf[2] = { 0 }; - uint8_t mac_s[8]; - milenage_f1(opc, k, rand, sqn_ms, amf, NULL, mac_s); - btw("mac_s = %s", osmo_hexdump_nospc(mac_s, sizeof(mac_s))); - /* verify valid AUTS resulting in SQN 23 with: - osmo-auc-gen -3 -a milenage -k EB215756028D60E3275E613320AEC880 \ - -o FB2A3D1B360F599ABAB99DB8669F8308 \ - -r 39fa2f4e3d523d8619a73b4f65c3e14d \ - -A 979498b1f72d3e28c59fa2e72f9c - */ -#endif - - btw("MS sends Authen Failure with Resync cause, VLR sends GSUP to HLR to resync"); - auth_request_sent = false; - gsup_expect_tx("08" /* OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST */ - "0108" "09710000000156f0" /* IMSI */ - "260e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */ - "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" /* RAND */); - ms_sends_msg("051c" /* 05 = MM; 1c = Auth Failure */ - "15" /* cause = Synch Failure */ - "220e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */); - VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR replies with new tuples"); - auth_request_sent = false; - auth_request_expect_rand = "0f1feb1623e1bf626334e37ec448ac18"; - auth_request_expect_autn = "02a83f62e9470000660d51afc75f169d"; - gsup_rx("0a" - /* imsi */ - "0108" "09710000000156f0" - /* 1 auth vector */ - /* TL TL rand */ - "0362" "2010" "0f1feb1623e1bf626334e37ec448ac18" - /* TL sres TL kc */ - "2104" "efde99da" "2208" "14778c855c523730" - /* TL 3G IK */ - "2310" "8a90c769b7272f3bb7a1c1fbb1ea9349" - /* TL 3G CK */ - "2410" "43ffc1cf8c89a7fd6ab94bd8d6162cbf" - /* TL AUTN */ - "2510" "02a83f62e9470000660d51afc75f169d" - /* TL RES */ - "2708" "1df5f0b4f22b696e" - /* TL TL rand */ - "0362" "2010" "ac21d34937b4e1142a2c757af2949319" - /* TL sres TL kc */ - "2104" "7818bfdc" "2208" "d175571f41f314a4" - /* TL 3G IK */ - "2310" "ff8edbceb6dd24799c77c3b9a6790c10" - /* TL 3G CK */ - "2410" "157c39022ca9d885a7f0766a7dfee448" - /* TL AUTN */ - "2510" "8a43b91898e500002cf354c6f5d1f8c3" - /* TL RES */ - "2708" "f748a7078f5018db" - ,NULL); - - VERBOSE_ASSERT(auth_request_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - if (via_ran == RAN_GERAN_A) { - btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000000156f0"); - ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e"); - VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - } else { - /* On UTRAN */ - btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl"); - cipher_mode_cmd_sent = false; - ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e"); - VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR"); - gsup_expect_tx("04010809710000000156f0"); - ms_sends_security_mode_complete(); - VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - } - - btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT"); - gsup_rx("10010809710000000156f00804032443f2", - "12010809710000000156f0"); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT"); - gsup_rx("06010809710000000156f0", NULL); - - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - - btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl"); - EXPECT_CONN_COUNT(1); - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - btw("even though the TMSI is not acked, we can already find the subscr with it"); - vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100); - VERBOSE_ASSERT(vsub != NULL, == true, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x"); - VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x"); - vlr_subscr_put(vsub); - - btw("MS sends TMSI Realloc Complete"); - ms_sends_msg("055b"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - clear_vlr(); -} - -void test_umts_authen_resync_geran() -{ - comment_start(); - _test_umts_authen_resync(RAN_GERAN_A); - comment_end(); -} - -void test_umts_authen_resync_utran() -{ - comment_start(); - _test_umts_authen_resync(RAN_UTRAN_IU); - comment_end(); -} - -msc_vlr_test_func_t msc_vlr_tests[] = { - test_umts_authen_geran, - test_umts_authen_utran, - test_umts_authen_resync_geran, - test_umts_authen_resync_utran, - NULL -}; diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err deleted file mode 100644 index dcacbf9e3..000000000 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.err +++ /dev/null @@ -1,1367 +0,0 @@ -===== test_umts_authen_geran -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL -DMM LU/new-LAC: 0/0 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650 -DVLR New subscr, IMSI: 901700000010650 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 -DVLR GSUP rx 511: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000010650) Received 5 auth tuples -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... -- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d -- ...autn=8704f5ba55f30000d2ee44b22c8ea919 -- ...expecting res=e229c19e791f2e41 -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000010650: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000010650: MM R99 AUTHENTICATION RESPONSE (res = e229c19e791f2e41) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000010650) received res: e2 29 c1 9e 79 1f 2e 41 -DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0 -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - gsup_tx_confirmed == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2 -DVLR GSUP rx 17: 10010809710000000156f00804032443f2 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR IMSI:901700000010650 has MSISDN:42342 -DVLR GSUP tx: 12010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0 -DVLR GSUP rx 11: 06010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:42342, with TMSI 0x03020100 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 1 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:42342 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 ---- -- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000010650 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DREF VLR subscr MSISDN:42342 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and... -- ...rand=c187a53a5e6b9d573cac7c74451fd46d -- ...autn=1843a645b98d00005b2d666af46c45d9 -- ...expecting res=7db47cf7f81e4dc7 -DREF VLR subscr MSISDN:42342 usage decreases to: 2 -DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:42342: MSC conn use - 1 == 1 - cm_service_result_sent == 0 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts with a CM Service Accept - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:42342: MM R99 AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:42342) received res: 7d b4 7c f7 f8 1e 4d c7 -DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -- sending CM Service Accept for MSISDN:42342 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request -DREF MSISDN:42342: MSC conn use - 1 == 1 - cm_service_result_sent == 1 -- a USSD request is serviced - expecting USSD: - Your extension is 42342 - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:42342: MSISDN = 42342 -DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d -- DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:42342 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:42342 usage increases to: 3 -DMM Subscriber MSISDN:42342 not paged yet, start paging. - RAN_GERAN_A sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:42342 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:42342 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 3 -- MS replies with Paging Response, and VLR sends Auth Request with third key - MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000010650 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:42342 usage increases to: 4 -DREF VLR subscr MSISDN:42342 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x3 and... -- ...rand=efa9c29a9742148d5c9070348716e1bb -- ...autn=f9375e6d41e1000096e7fe4ff1c27e39 -- ...expecting res=706f996719ba609c -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:42342: MSC conn use - 1 == 1 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and sends pending SMS - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:42342: MM R99 AUTHENTICATION RESPONSE (res = 706f996719ba609c) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:42342) received res: 70 6f 99 67 19 ba 60 9c -DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:42342 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:42342 usage increases to: 5 -DREF MSISDN:42342: MSC conn use + 1 == 3 -DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:42342: MSC conn use - 1 == 2 - dtap_tx_confirmed == 1 - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:42342 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:42342: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:42342: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:42342: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_GERAN_A -- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:42342 usage decreases to: 3 -DREF VLR subscr MSISDN:42342 usage decreases to: 2 -DREF MSISDN:42342: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DMM Subscriber MSISDN:42342 DETACHED -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:42342 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_umts_authen_geran: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_umts_authen_utran -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL -DMM LU/new-LAC: 0/0 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650 -DVLR New subscr, IMSI: 901700000010650 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 -DVLR GSUP rx 511: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000010650) Received 5 auth tuples -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... -- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d -- ...autn=8704f5ba55f30000d2ee44b22c8ea919 -- ...expecting res=e229c19e791f2e41 -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends SecurityModeControl - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000010650: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000010650: MM R99 AUTHENTICATION RESPONSE (res = e229c19e791f2e41) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000010650) received res: e2 29 c1 9e 79 1f 2e 41 -DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -- sending SecurityModeControl for IMSI:901700000010650 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - cipher_mode_cmd_sent == 1 - lu_result_sent == 0 -- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR -DIUCS Looking for IuCS subscriber: conn_id 2a -DIUCS 0: IMSI:901700000010650 Iu conn_id 42 -DIUCS subscribers registered: 1 -DIUCS Found IuCS subscriber for conn_id 2a -DIUCS IuCS security mode complete for IMSI:901700000010650 -DMM <- SECURITY MODE COMPLETE IMSI:901700000010650 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() -DIUCS IMSI:901700000010650: tx CommonID 901700000010650 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0 -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA - gsup_tx_confirmed == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2 -DVLR GSUP rx 17: 10010809710000000156f00804032443f2 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR IMSI:901700000010650 has MSISDN:42342 -DVLR GSUP tx: 12010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0 -DVLR GSUP rx 11: 06010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:42342, with TMSI 0x03020100 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 1 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:42342 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 ---- -- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_CM_SERV_REQ - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24) -DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000010650 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DREF VLR subscr MSISDN:42342 usage increases to: 3 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1 -- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and... -- ...rand=c187a53a5e6b9d573cac7c74451fd46d -- ...autn=1843a645b98d00005b2d666af46c45d9 -- ...expecting res=7db47cf7f81e4dc7 -DREF VLR subscr MSISDN:42342 usage decreases to: 2 -DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:42342: MSC conn use - 1 == 1 - cm_service_result_sent == 0 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and sends SecurityModeControl - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:42342: MM R99 AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:42342) received res: 7d b4 7c f7 f8 1e 4d c7 -DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -- sending SecurityModeControl for MSISDN:42342 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH -DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:42342: MSC conn use - 1 == 1 - cipher_mode_cmd_sent == 1 - cm_service_result_sent == 0 -- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept -DIUCS Looking for IuCS subscriber: conn_id 2a -DIUCS 0: MSISDN:42342 Iu conn_id 42 -DIUCS subscribers registered: 1 -DIUCS Found IuCS subscriber for conn_id 2a -DIUCS IuCS security mode complete for MSISDN:42342 -DMM <- SECURITY MODE COMPLETE MSISDN:42342 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() -DIUCS MSISDN:42342: tx CommonID 901700000010650 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request - cm_service_result_sent == 0 -- a USSD request is serviced - expecting USSD: - Your extension is 42342 - MSC <--RAN_UTRAN_IU-- MS: GSM48_PDISC_NC_SS:0x3b -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b) -DMM MSISDN:42342: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM USSD: Own number requested -DMM MSISDN:42342: MSISDN = 42342 -DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d -- DTAP matches expected message -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- all requests serviced, conn has been released - llist_count(&net->subscr_conns) == 0 ---- -- an SMS is sent, MS is paged -DREF VLR subscr MSISDN:42342 usage increases to: 2 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:42342 usage increases to: 3 -DMM Subscriber MSISDN:42342 not paged yet, start paging. - RAN_UTRAN_IU sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 0 - strcmp(paging_expecting_imsi, imsi) == 0 -DREF VLR subscr MSISDN:42342 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 3 - paging_sent == 1 - paging_stopped == 0 -- the subscriber and its pending request should remain -DREF VLR subscr MSISDN:42342 usage increases to: 4 - llist_count(&vsub->cs.requests) == 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 3 -- MS replies with Paging Response, and VLR sends Auth Request with third key - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_RR_PAG_RESP - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27) -DRR PAGING RESPONSE: MI(IMSI)=901700000010650 -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START -DREF VLR subscr MSISDN:42342 usage increases to: 4 -DREF VLR subscr MSISDN:42342 usage increases to: 5 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2 -- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x3 and... -- ...rand=efa9c29a9742148d5c9070348716e1bb -- ...autn=f9375e6d41e1000096e7fe4ff1c27e39 -- ...expecting res=706f996719ba609c -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:42342: MSC conn use - 1 == 1 - auth_request_sent == 1 -- needs auth, not yet accepted -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- MS sends Authen Response, VLR accepts and sends SecurityModeControl - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM MSISDN:42342: MM R99 AUTHENTICATION RESPONSE (res = 706f996719ba609c) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(MSISDN:42342) received res: 70 6f 99 67 19 ba 60 9c -DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2() -- sending SecurityModeControl for MSISDN:42342 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH -DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF MSISDN:42342: MSC conn use - 1 == 1 - cipher_mode_cmd_sent == 1 - paging_stopped == 0 -- MS sends SecurityModeControl acceptance, VLR accepts and sends SMS -DIUCS Looking for IuCS subscriber: conn_id 2a -DIUCS 0: MSISDN:42342 Iu conn_id 42 -DIUCS subscribers registered: 1 -DIUCS Found IuCS subscriber for conn_id 2a -DIUCS IuCS security mode complete for MSISDN:42342 -DMM <- SECURITY MODE COMPLETE MSISDN:42342 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph() -DIUCS MSISDN:42342: tx CommonID 901700000010650 -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei() -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DPAG Paging success for MSISDN:42342 (event=0) -DPAG Calling paging cbfn. -DREF VLR subscr MSISDN:42342 usage increases to: 5 -DREF MSISDN:42342: MSC conn use + 1 == 2 -DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05 -- DTAP matches expected message -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS - paging_stopped == 1 -- SMS was delivered, no requests pending for subscr -DREF VLR subscr MSISDN:42342 usage increases to: 5 - llist_count(&vsub->cs.requests) == 0 -DREF VLR subscr MSISDN:42342 usage decreases to: 4 -- conn is still open to wait for SMS ack dance - llist_count(&net->subscr_conns) == 1 -- MS replies with CP-ACK for received SMS - MSC <--RAN_UTRAN_IU-- MS: GSM48_PDISC_SMS:0x04 -DREF MSISDN:42342: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4) -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS -DREF MSISDN:42342: MSC conn use - 1 == 2 - llist_count(&net->subscr_conns) == 1 -- MS also sends RP-ACK, MSC in turn sends CP-ACK for that - MSC <--RAN_UTRAN_IU-- MS: GSM48_PDISC_SMS:0x01 -DREF MSISDN:42342: MSC conn use + 1 == 3 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING -DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_UTRAN_IU -- DTAP --RAN_UTRAN_IU--> MS: GSM48_PDISC_SMS:0x04: 0904 -- DTAP matches expected message -DREF VLR subscr MSISDN:42342 usage decreases to: 3 -DREF VLR subscr MSISDN:42342 usage decreases to: 2 -DREF MSISDN:42342: MSC conn use - 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance -DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 - dtap_tx_confirmed == 1 -- SMS is done, conn is gone - llist_count(&net->subscr_conns) == 0 ---- -- subscriber detaches - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_IMSI_DETACH_IND - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1) -DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650 -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DMM Subscriber MSISDN:42342 DETACHED -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:42342 -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - llist_count(&net->subscr_conns) == 0 -===== test_umts_authen_utran: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_umts_authen_resync_geran -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL -DMM LU/new-LAC: 0/0 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650 -DVLR New subscr, IMSI: 901700000010650 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e41 -DVLR GSUP rx 111: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e41 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000010650) Received 1 auth tuples -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... -- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d -- ...autn=8704f5ba55f30000d2ee44b22c8ea919 -- ...expecting res=e229c19e791f2e41 -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Failure with Resync cause, VLR sends GSUP to HLR to resync - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_FAIL -DREF IMSI:901700000010650: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_FAIL (0x5:0x1c) -DMM IMSI:901700000010650: MM R99 AUTHENTICATION SYNCH (AUTS = 979498b1f72d3e28c59fa2e72f9c) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_FAIL -DVLR GSUP tx: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - gsup_tx_confirmed == 1 - auth_request_sent == 0 - lu_result_sent == 0 -- HLR replies with new tuples -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db -DVLR GSUP rx 211: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000010650) Received 2 auth tuples -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: state_chg to VLR_SUB_AS_WAIT_RESP_RESYNC -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: got auth tuple: use_count=1 key_seq=0 -- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... -- ...rand=0f1feb1623e1bf626334e37ec448ac18 -- ...autn=02a83f62e9470000660d51afc75f169d -- ...expecting res=1df5f0b4f22b696e -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000010650: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000010650: MM R99 AUTHENTICATION RESPONSE (res = 1df5f0b4f22b696e) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000010650) received res: 1d f5 f0 b4 f2 2b 69 6e -DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0 -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - gsup_tx_confirmed == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2 -DVLR GSUP rx 17: 10010809710000000156f00804032443f2 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR IMSI:901700000010650 has MSISDN:42342 -DVLR GSUP tx: 12010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0 -DVLR GSUP rx 11: 06010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:42342, with TMSI 0x03020100 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 1 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:42342 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:42342 -===== test_umts_authen_resync_geran: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -===== test_umts_authen_resync_utran -- Location Update request causes a GSUP Send Auth Info request to HLR - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST - new conn -DREF unknown: MSC conn use + 1 == 1 -DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8) -DREF unknown: MSC conn use + 1 == 2 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW -DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL -DMM LU/new-LAC: 0/0 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA -DREF VLR subscr unknown usage increases to: 1 -DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650 -DVLR New subscr, IMSI: 901700000010650 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START -DVLR GSUP tx: 08010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - lu_result_sent == 0 -- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e41 -DVLR GSUP rx 111: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e41 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000010650) Received 1 auth tuples -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0 -- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... -- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d -- ...autn=8704f5ba55f30000d2ee44b22c8ea919 -- ...expecting res=e229c19e791f2e41 -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Failure with Resync cause, VLR sends GSUP to HLR to resync - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_FAIL -DREF IMSI:901700000010650: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_FAIL (0x5:0x1c) -DMM IMSI:901700000010650: MM R99 AUTHENTICATION SYNCH (AUTS = 979498b1f72d3e28c59fa2e72f9c) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_FAIL -DVLR GSUP tx: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d -GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - gsup_tx_confirmed == 1 - auth_request_sent == 0 - lu_result_sent == 0 -- HLR replies with new tuples -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db -DVLR GSUP rx 211: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: Received Event VLR_AUTH_E_HLR_SAI_ACK -DVLR SUBSCR(IMSI:901700000010650) Received 2 auth tuples -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: state_chg to VLR_SUB_AS_WAIT_RESP_RESYNC -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: got auth tuple: use_count=1 key_seq=0 -- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and... -- ...rand=0f1feb1623e1bf626334e37ec448ac18 -- ...autn=02a83f62e9470000660d51afc75f169d -- ...expecting res=1df5f0b4f22b696e -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0 - auth_request_sent == 1 - lu_result_sent == 0 -- MS sends Authen Response, VLR accepts and sends SecurityModeControl - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP -DREF IMSI:901700000010650: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14) -DMM IMSI:901700000010650: MM R99 AUTHENTICATION RESPONSE (res = 1df5f0b4f22b696e) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP -DVLR SUBSCR(IMSI:901700000010650) received res: 1d f5 f0 b4 f2 2b 69 6e -DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result VLR_AUTH_RES_PASSED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance -DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth() -- sending SecurityModeControl for IMSI:901700000010650 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH -DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW) -DREF IMSI:901700000010650: MSC conn use - 1 == 1 - cipher_mode_cmd_sent == 1 - lu_result_sent == 0 -- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR -DIUCS Looking for IuCS subscriber: conn_id 2a -DIUCS 0: IMSI:901700000010650 Iu conn_id 42 -DIUCS subscribers registered: 1 -DIUCS Found IuCS subscriber for conn_id 2a -DIUCS IuCS security mode complete for IMSI:901700000010650 -DMM <- SECURITY MODE COMPLETE IMSI:901700000010650 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph() -DIUCS IMSI:901700000010650: tx CommonID 901700000010650 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4() -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START -DVLR GSUP tx: 04010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0 -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA - gsup_tx_confirmed == 1 - lu_result_sent == 0 -- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2 -DVLR GSUP rx 17: 10010809710000000156f00804032443f2 -DREF VLR subscr IMSI:901700000010650 usage increases to: 2 -DVLR IMSI:901700000010650 has MSISDN:42342 -DVLR GSUP tx: 12010809710000000156f0 -GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 0 -- HLR also sends GSUP _UPDATE_LOCATION_RESULT -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0 -DVLR GSUP rx 11: 06010809710000000156f0 -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance -DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650) -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance -DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi() -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF -- sending LU Accept for MSISDN:42342, with TMSI 0x03020100 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0 - lu_result_sent == 1 -- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl - llist_count(&net->subscr_conns) == 1 -msc_subscr_conn_is_accepted() == false - requests shall be thwarted -DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP -DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33 -DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1 -DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1) -DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01 -- even though the TMSI is not acked, we can already find the subscr with it -DREF VLR subscr MSISDN:42342 usage increases to: 2 - vsub != NULL == 1 - strcmp(vsub->imsi, imsi) == 0 - vsub->tmsi_new == 0x03020100 - vsub->tmsi == 0xffffffff -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- MS sends TMSI Realloc Complete - MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_TMSI_REALL_COMPL -DREF MSISDN:42342: MSC conn use + 1 == 2 -DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b) -DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342 -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK -DREF VLR subscr MSISDN:42342 usage increases to: 2 -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650) -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance -DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650) -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance -DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 1 -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance -DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated -DREF MSISDN:42342: MSC conn use - 1 == 0 -DRLL subscr MSISDN:42342: Freeing subscriber connection -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -- LU was successful, and the conn has already been closed - llist_count(&net->subscr_conns) == 0 -DREF freeing VLR subscr MSISDN:42342 -===== test_umts_authen_resync_utran: SUCCESS - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - -full talloc report on 'msgb' (total 0 bytes in 1 blocks) -talloc_total_blocks(tall_bsc_ctx) == 9 - diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.ok b/tests/msc_vlr/msc_vlr_test_umts_authen.ok deleted file mode 100644 index a965a70ed..000000000 --- a/tests/msc_vlr/msc_vlr_test_umts_authen.ok +++ /dev/null @@ -1 +0,0 @@ -Done diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c deleted file mode 100644 index 0a485b4a9..000000000 --- a/tests/msc_vlr/msc_vlr_tests.c +++ /dev/null @@ -1,763 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "msc_vlr_tests.h" - -bool _log_lines = false; - -struct gsm_network *net = NULL; - -struct gsm_bts *the_bts; - -const char *gsup_tx_expected = NULL; -bool gsup_tx_confirmed; - -struct msgb *dtap_tx_expected = NULL; -bool dtap_tx_confirmed; - -enum result_sent lu_result_sent; -enum result_sent cm_service_result_sent; -bool auth_request_sent; -const char *auth_request_expect_rand; -const char *auth_request_expect_autn; -bool cipher_mode_cmd_sent; -bool cipher_mode_cmd_sent_with_imeisv; - -struct msgb *msgb_from_hex(const char *label, uint16_t size, const char *hex) -{ - struct msgb *msg = msgb_alloc(size, label); - unsigned char *rc; - msg->l2h = msg->head; - rc = msgb_put(msg, osmo_hexparse(hex, msg->head, msgb_tailroom(msg))); - OSMO_ASSERT(rc == msg->l2h); - return msg; -} - -const char *gh_type_name(struct gsm48_hdr *gh) -{ - return gsm48_pdisc_msgtype_name(gsm48_hdr_pdisc(gh), - gsm48_hdr_msg_type(gh)); -} - -const char *msg_type_name(struct msgb *msg) -{ - return gh_type_name((void*)msg->data); -} - -void dtap_expect_tx(const char *hex) -{ - /* Has the previously expected dtap been received? */ - OSMO_ASSERT(!dtap_tx_expected); - if (!hex) - return; - dtap_tx_expected = msgb_from_hex("dtap_tx_expected", 1024, hex); - dtap_tx_confirmed = false; -} - -void dtap_expect_tx_ussd(char *ussd_text) -{ - uint8_t ussd_enc[128]; - int len; - /* header */ - char ussd_msg_hex[128] = "8b2a1c27a225020100302002013b301b04010f0416"; - - log("expecting USSD:\n %s", ussd_text); - /* append encoded USSD text */ - gsm_7bit_encode_n_ussd(ussd_enc, sizeof(ussd_enc), ussd_text, - &len); - strncat(ussd_msg_hex, osmo_hexdump_nospc(ussd_enc, len), - sizeof(ussd_msg_hex) - strlen(ussd_msg_hex)); - dtap_expect_tx(ussd_msg_hex); -} - -int vlr_gsupc_read_cb(struct gsup_client *gsupc, struct msgb *msg); - -void gsup_rx(const char *rx_hex, const char *expect_tx_hex) -{ - int rc; - struct msgb *msg; - const char *label; - - gsup_expect_tx(expect_tx_hex); - - msg = msgb_from_hex("gsup", 1024, rx_hex); - label = osmo_gsup_message_type_name(msg->l2h[0]); - fprintf(stderr, "<-- GSUP rx %s: %s\n", label, - osmo_hexdump_nospc(msgb_l2(msg), msgb_l2len(msg))); - rc = vlr_gsupc_read_cb(net->vlr->gsup_client, msg); - fprintf(stderr, "<-- GSUP rx %s: vlr_gsupc_read_cb() returns %d\n", - label, rc); - if (expect_tx_hex) - OSMO_ASSERT(gsup_tx_confirmed); - talloc_free(msg); -} - -bool conn_exists(struct gsm_subscriber_connection *conn) -{ - struct gsm_subscriber_connection *c; - llist_for_each_entry(c, &net->subscr_conns, entry) { - if (c == conn) - return true; - } - return false; -} - -enum ran_type rx_from_ran = RAN_GERAN_A; - -struct gsm_subscriber_connection *conn_new(void) -{ - struct gsm_subscriber_connection *conn; - conn = msc_subscr_con_allocate(net); - conn->bts = the_bts; - conn->via_ran = rx_from_ran; - if (conn->via_ran == RAN_UTRAN_IU) { - struct ranap_ue_conn_ctx *ue_ctx = talloc_zero(conn, struct ranap_ue_conn_ctx); - *ue_ctx = (struct ranap_ue_conn_ctx){ - .conn_id = 42, - }; - conn->iu.ue_ctx = ue_ctx; - } - return conn; -} - -struct gsm_subscriber_connection *g_conn = NULL; - -void rx_from_ms(struct msgb *msg) -{ - int rc; - - struct gsm48_hdr *gh = msgb_l3(msg); - - log("MSC <--%s-- MS: %s", - ran_type_name(rx_from_ran), - gh_type_name(gh)); - - if (g_conn && !conn_exists(g_conn)) - g_conn = NULL; - - if (!g_conn) { - log("new conn"); - g_conn = conn_new(); - rc = msc_compl_l3(g_conn, msg, 23); - if (rc == BSC_API_CONN_POL_REJECT) { - msc_subscr_con_free(g_conn); - g_conn = NULL; - } - } else { - if ((gsm48_hdr_pdisc(gh) == GSM48_PDISC_RR) - && (gsm48_hdr_msg_type(gh) == GSM48_MT_RR_CIPH_M_COMPL)) - msc_cipher_mode_compl(g_conn, msg, 0); - else - msc_dtap(g_conn, 23, msg); - } - - if (g_conn && !conn_exists(g_conn)) - g_conn = NULL; -} - -void ms_sends_msg(const char *hex) -{ - struct msgb *msg; - - msg = msgb_from_hex("ms_sends_msg", 1024, hex); - msg->l1h = msg->l2h = msg->l3h = msg->data; - rx_from_ms(msg); - talloc_free(msg); -} - -int ms_sends_msg_fake(uint8_t pdisc, uint8_t msg_type) -{ - int rc; - struct msgb *msg; - struct gsm48_hdr *gh; - - msg = msgb_alloc(1024, "ms_sends_msg_fake"); - msg->l1h = msg->l2h = msg->l3h = msg->data; - - gh = (struct gsm48_hdr*)msgb_put(msg, sizeof(*gh)); - gh->proto_discr = pdisc; - gh->msg_type = msg_type; - /* some amount of data, whatever */ - msgb_put(msg, 123); - - rc = gsm0408_dispatch(g_conn, msg); - - talloc_free(msg); - return rc; -} - -void thwart_rx_non_initial_requests() -{ - log("requests shall be thwarted"); - OSMO_ASSERT(ms_sends_msg_fake(GSM48_PDISC_CC, GSM48_MT_CC_SETUP) == -EACCES); - OSMO_ASSERT(ms_sends_msg_fake(GSM48_PDISC_MM, 0x33 /* nonexistent */) == -EACCES); - OSMO_ASSERT(ms_sends_msg_fake(GSM48_PDISC_RR, GSM48_MT_RR_SYSINFO_1) == -EACCES); - OSMO_ASSERT(ms_sends_msg_fake(GSM48_PDISC_SMS, GSM411_MT_CP_DATA) == -EACCES); -} - -void send_sms(struct vlr_subscr *receiver, - struct vlr_subscr *sender, - char *str) -{ - struct gsm_sms *sms = sms_from_text(receiver, sender, 0, str); - gsm411_send_sms_subscr(receiver, sms); -} - -unsigned char next_rand_byte = 0; -/* override, requires '-Wl,--wrap=RAND_bytes' */ -int __real_RAND_bytes(unsigned char *buf, int num); -int __wrap_RAND_bytes(unsigned char *buf, int num) -{ - int i; - for (i = 0; i < num; i++) - buf[i] = next_rand_byte++; - return 1; -} - -/* override, requires '-Wl,--wrap=gsm340_gen_scts' */ -void __real_gsm340_gen_scts(uint8_t *scts, time_t time); -void __wrap_gsm340_gen_scts(uint8_t *scts, time_t time) -{ - /* Remove the time to encode for deterministic test results */ - __real_gsm340_gen_scts(scts, 0); -} - -const char *paging_expecting_imsi = NULL; -uint32_t paging_expecting_tmsi; -bool paging_sent; -bool paging_stopped; - -void paging_expect_imsi(const char *imsi) -{ - paging_expecting_imsi = imsi; - paging_expecting_tmsi = GSM_RESERVED_TMSI; -} - -void paging_expect_tmsi(uint32_t tmsi) -{ - paging_expecting_tmsi = tmsi; - paging_expecting_imsi = NULL; -} - -int _paging_sent(enum ran_type via_ran, const char *imsi, uint32_t tmsi, uint32_t lac) -{ - log("%s sends out paging request to IMSI %s, TMSI 0x%08x, LAC %u", - ran_type_name(via_ran), imsi, tmsi, lac); - OSMO_ASSERT(paging_expecting_imsi || (paging_expecting_tmsi != GSM_RESERVED_TMSI)); - if (paging_expecting_imsi) - VERBOSE_ASSERT(strcmp(paging_expecting_imsi, imsi), == 0, "%d"); - if (paging_expecting_tmsi != GSM_RESERVED_TMSI) { - VERBOSE_ASSERT(paging_expecting_tmsi, == tmsi, "0x%08x"); - } - paging_sent = true; - paging_stopped = false; - return 1; -} - -/* override, requires '-Wl,--wrap=ranap_iu_page_cs' */ -int __real_ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac); -int __wrap_ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac) -{ - return _paging_sent(RAN_UTRAN_IU, imsi, tmsi ? *tmsi : GSM_RESERVED_TMSI, lac); -} - -/* override, requires '-Wl,--wrap=a_iface_tx_paging' */ -int __real_a_iface_tx_paging(const char *imsi, uint32_t tmsi, uint16_t lac); -int __wrap_a_iface_tx_paging(const char *imsi, uint32_t tmsi, uint16_t lac) -{ - return _paging_sent(RAN_GERAN_A, imsi, tmsi, lac); -} - -/* override, requires '-Wl,--wrap=msc_stop_paging' */ -void __real_msc_stop_paging(struct vlr_subscr *vsub); -void __wrap_msc_stop_paging(struct vlr_subscr *vsub) -{ - paging_stopped = true; -} - -void clear_vlr() -{ - struct vlr_subscr *vsub, *n; - llist_for_each_entry_safe(vsub, n, &net->vlr->subscribers, list) { - vlr_subscr_free(vsub); - } - - net->authentication_required = false; - net->a5_encryption = VLR_CIPH_NONE; - net->vlr->cfg.check_imei_rqd = false; - net->vlr->cfg.assign_tmsi = false; - net->vlr->cfg.retrieve_imeisv = false; - - rx_from_ran = RAN_GERAN_A; - auth_request_sent = false; - auth_request_expect_rand = NULL; - auth_request_expect_autn = NULL; - - next_rand_byte = 0; - - osmo_gettimeofday_override = false; -} - -static struct log_info_cat test_categories[] = { - [DMSC] = { - .name = "DMSC", - .description = "Mobile Switching Center", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, - [DRLL] = { - .name = "DRLL", - .description = "A-bis Radio Link Layer (RLL)", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, - [DMM] = { - .name = "DMM", - .description = "Layer3 Mobility Management (MM)", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, - [DRR] = { - .name = "DRR", - .description = "Layer3 Radio Resource (RR)", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, - [DCC] = { - .name = "DCC", - .description = "Layer3 Call Control (CC)", - .enabled = 1, .loglevel = LOGL_NOTICE, - }, - [DMM] = { - .name = "DMM", - .description = "Layer3 Mobility Management (MM)", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, - [DVLR] = { - .name = "DVLR", - .description = "Visitor Location Register", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, - [DREF] = { - .name = "DREF", - .description = "Reference Counting", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, - [DPAG] = { - .name = "DPAG", - .description = "Paging Subsystem", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, - [DIUCS] = { - .name = "DIUCS", - .description = "Iu-CS Protocol", - .enabled = 1, .loglevel = LOGL_DEBUG, - }, -}; - -static struct log_info info = { - .cat = test_categories, - .num_cat = ARRAY_SIZE(test_categories), -}; - -extern void *tall_bsc_ctx; - -int fake_mncc_recv(struct gsm_network *net, struct msgb *msg) -{ - fprintf(stderr, "rx MNCC\n"); - return 0; -} - -/* override, requires '-Wl,--wrap=gsup_client_create' */ -struct gsup_client * -__real_gsup_client_create(const char *ip_addr, unsigned int tcp_port, - gsup_client_read_cb_t read_cb, - struct oap_client_config *oap_config); -struct gsup_client * -__wrap_gsup_client_create(const char *ip_addr, unsigned int tcp_port, - gsup_client_read_cb_t read_cb, - struct oap_client_config *oap_config) -{ - struct gsup_client *gsupc; - gsupc = talloc_zero(tall_bsc_ctx, struct gsup_client); - OSMO_ASSERT(gsupc); - return gsupc; -} - -/* override, requires '-Wl,--wrap=gsup_client_send' */ -int __real_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg); -int __wrap_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg) -{ - const char *is = osmo_hexdump_nospc(msg->data, msg->len); - fprintf(stderr, "GSUP --> HLR: %s: %s\n", - osmo_gsup_message_type_name(msg->data[0]), is); - - OSMO_ASSERT(gsup_tx_expected); - if (strcmp(gsup_tx_expected, is)) { - fprintf(stderr, "Mismatch! Expected:\n%s\n", gsup_tx_expected); - abort(); - } - - talloc_free(msg); - gsup_tx_confirmed = true; - gsup_tx_expected = NULL; - return 0; -} - -int _validate_dtap(struct msgb *msg, enum ran_type to_ran) -{ - struct gsm48_hdr *gh = (void*)msg->data; - btw("DTAP --%s--> MS: %s: %s", - ran_type_name(to_ran), msg_type_name(msg), - osmo_hexdump_nospc(msg->data, msg->len)); - - OSMO_ASSERT(dtap_tx_expected); - if (msg->len != dtap_tx_expected->len - || memcmp(msg->data, dtap_tx_expected->data, msg->len)) { - fprintf(stderr, "Mismatch! Expected:\n%s\n", - osmo_hexdump_nospc(dtap_tx_expected->data, - dtap_tx_expected->len)); - abort(); - } - - btw("DTAP matches expected message"); - - talloc_free(msg); - dtap_tx_confirmed = true; - talloc_free(dtap_tx_expected); - dtap_tx_expected = NULL; - return 0; -} - -/* override, requires '-Wl,--wrap=ranap_iu_tx' */ -int __real_ranap_iu_tx(struct msgb *msg, uint8_t sapi); -int __wrap_ranap_iu_tx(struct msgb *msg, uint8_t sapi) -{ - return _validate_dtap(msg, RAN_UTRAN_IU); -} - -/* override, requires '-Wl,--wrap=a_iface_tx_dtap' */ -int __real_a_iface_tx_dtap(struct msgb *msg); -int __wrap_a_iface_tx_dtap(struct msgb *msg) -{ - return _validate_dtap(msg, RAN_GERAN_A); -} - -static int fake_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi) -{ - struct gsm_subscriber_connection *conn = msc_conn_ref; - if (send_tmsi == GSM_RESERVED_TMSI) - btw("sending LU Accept for %s", vlr_subscr_name(conn->vsub)); - else - btw("sending LU Accept for %s, with TMSI 0x%08x", - vlr_subscr_name(conn->vsub), send_tmsi); - lu_result_sent |= RES_ACCEPT; - return 0; -} - -static int fake_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause) -{ - struct gsm_subscriber_connection *conn = msc_conn_ref; - btw("sending LU Reject for %s, cause %u", vlr_subscr_name(conn->vsub), cause); - lu_result_sent |= RES_REJECT; - return 0; -} - -static int fake_vlr_tx_cm_serv_acc(void *msc_conn_ref) -{ - struct gsm_subscriber_connection *conn = msc_conn_ref; - btw("sending CM Service Accept for %s", vlr_subscr_name(conn->vsub)); - cm_service_result_sent |= RES_ACCEPT; - return 0; -} - -static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref, - enum vlr_proc_arq_result result) -{ - struct gsm_subscriber_connection *conn = msc_conn_ref; - btw("sending CM Service Reject for %s, result %s", - vlr_subscr_name(conn->vsub), - vlr_proc_arq_result_name(result)); - cm_service_result_sent |= RES_REJECT; - return 0; -} - -static int fake_vlr_tx_auth_req(void *msc_conn_ref, struct gsm_auth_tuple *at, - bool send_autn) -{ - struct gsm_subscriber_connection *conn = msc_conn_ref; - char *hex; - bool ok = true; - btw("sending %s Auth Request for %s: tuple use_count=%d key_seq=%d auth_types=0x%x and...", - send_autn? "UMTS" : "GSM", vlr_subscr_name(conn->vsub), - at->use_count, at->key_seq, at->vec.auth_types); - - hex = osmo_hexdump_nospc((void*)&at->vec.rand, sizeof(at->vec.rand)); - btw("...rand=%s", hex); - if (!auth_request_expect_rand - || strcmp(hex, auth_request_expect_rand) != 0) { - ok = false; - log("FAILURE: expected rand=%s", - auth_request_expect_rand ? auth_request_expect_rand : "-"); - } - - if (send_autn) { - hex = osmo_hexdump_nospc((void*)&at->vec.autn, sizeof(at->vec.autn)); - btw("...autn=%s", hex); - if (!auth_request_expect_autn - || strcmp(hex, auth_request_expect_autn) != 0) { - ok = false; - log("FAILURE: expected autn=%s", - auth_request_expect_autn ? auth_request_expect_autn : "-"); - } - } else if (auth_request_expect_autn) { - ok = false; - log("FAILURE: no AUTN sent, expected AUTN = %s", - auth_request_expect_autn); - } - - if (send_autn) - btw("...expecting res=%s", - osmo_hexdump_nospc((void*)&at->vec.res, at->vec.res_len)); - else - btw("...expecting sres=%s", - osmo_hexdump_nospc((void*)&at->vec.sres, sizeof(at->vec.sres))); - - auth_request_sent = ok; - return 0; -} - -static int fake_vlr_tx_auth_rej(void *msc_conn_ref) -{ - struct gsm_subscriber_connection *conn = msc_conn_ref; - btw("sending Auth Reject for %s", vlr_subscr_name(conn->vsub)); - return 0; -} - -static int fake_vlr_tx_ciph_mode_cmd(void *msc_conn_ref, enum vlr_ciph ciph, - bool retrieve_imeisv) -{ - /* FIXME: we actually would like to see the message bytes checked here, - * not possible while msc_vlr_set_ciph_mode() calls - * gsm0808_cipher_mode() directly. When the MSCSPLIT is ready, check - * the tx bytes in the sense of dtap_expect_tx() above. */ - struct gsm_subscriber_connection *conn = msc_conn_ref; - switch (conn->via_ran) { - case RAN_GERAN_A: - btw("sending Ciphering Mode Command for %s: cipher=%s kc=%s" - " retrieve_imeisv=%d", - vlr_subscr_name(conn->vsub), - vlr_ciph_name(conn->network->a5_encryption), - osmo_hexdump_nospc(conn->vsub->last_tuple->vec.kc, 8), - retrieve_imeisv); - break; - case RAN_UTRAN_IU: - btw("sending SecurityModeControl for %s", - vlr_subscr_name(conn->vsub)); - break; - default: - btw("UNKNOWN RAN TYPE %d", conn->via_ran); - OSMO_ASSERT(false); - return -1; - } - cipher_mode_cmd_sent = true; - cipher_mode_cmd_sent_with_imeisv = retrieve_imeisv; - return 0; -} - -void ms_sends_security_mode_complete() -{ - OSMO_ASSERT(g_conn); - OSMO_ASSERT(g_conn->via_ran == RAN_UTRAN_IU); - OSMO_ASSERT(g_conn->iu.ue_ctx); - /* TODO mock IEs or call vlr callback directly */ - iucs_rx_ranap_event(g_conn->network, g_conn->iu.ue_ctx, - RANAP_IU_EVENT_SECURITY_MODE_COMPLETE, - NULL); -} - -const struct timeval fake_time_start_time = { 123, 456 }; - -void fake_time_start() -{ - osmo_gettimeofday_override_time = fake_time_start_time; - osmo_gettimeofday_override = true; - fake_time_passes(0, 0); -} - -void check_talloc(void *msgb_ctx, void *tall_bsc_ctx, int expected_blocks) -{ - talloc_report_full(msgb_ctx, stderr); - fprintf(stderr, "talloc_total_blocks(tall_bsc_ctx) == %zu\n", - talloc_total_blocks(tall_bsc_ctx)); - if (talloc_total_blocks(tall_bsc_ctx) != expected_blocks) - talloc_report_full(tall_bsc_ctx, stderr); - fprintf(stderr, "\n"); -} - -static struct { - bool verbose; - int run_test_nr; -} cmdline_opts = { - .verbose = false, - .run_test_nr = -1, -}; - -static void print_help(const char *program) -{ - printf("Usage:\n" - " %s [-v] [N [N...]]\n" - "Options:\n" - " -h --help show this text.\n" - " -v --verbose print source file and line numbers\n" - " N run only the Nth test (first test is N=1)\n", - program - ); -} - -static void handle_options(int argc, char **argv) -{ - while (1) { - int option_index = 0, c; - static struct option long_options[] = { - {"help", 0, 0, 'h'}, - {"verbose", 1, 0, 'v'}, - {0, 0, 0, 0} - }; - - c = getopt_long(argc, argv, "hv", - long_options, &option_index); - if (c == -1) - break; - - switch (c) { - case 'h': - print_help(argv[0]); - exit(0); - case 'v': - cmdline_opts.verbose = true; - break; - default: - /* catch unknown options *as well as* missing arguments. */ - fprintf(stderr, "Error in command line options. Exiting.\n"); - exit(-1); - break; - } - } -} - -void *msgb_ctx = NULL; - -void run_tests(int nr) -{ - int test_nr; - nr --; /* arg's first test is 1, in here it's 0 */ - for (test_nr = 0; msc_vlr_tests[test_nr]; test_nr ++) { - if (nr >= 0 && test_nr != nr) - continue; - - if (cmdline_opts.verbose) - fprintf(stderr, "(test nr %d)\n", test_nr + 1); - - msc_vlr_tests[test_nr](); - - if (cmdline_opts.verbose) - fprintf(stderr, "(test nr %d)\n", test_nr + 1); - - check_talloc(msgb_ctx, tall_bsc_ctx, 9); - } while(0); -} - -int main(int argc, char **argv) -{ - handle_options(argc, argv); - - tall_bsc_ctx = talloc_named_const(NULL, 0, "subscr_conn_test_ctx"); - msgb_ctx = msgb_talloc_ctx_init(tall_bsc_ctx, 0); - osmo_init_logging(&info); - - _log_lines = cmdline_opts.verbose; - - OSMO_ASSERT(osmo_stderr_target); - log_set_use_color(osmo_stderr_target, 0); - log_set_print_timestamp(osmo_stderr_target, 0); - log_set_print_filename(osmo_stderr_target, _log_lines? 1 : 0); - log_set_print_category(osmo_stderr_target, 1); - - net = gsm_network_init(tall_bsc_ctx, 1, 1, fake_mncc_recv); - net->gsup_server_addr_str = talloc_strdup(net, "no_gsup_server"); - net->gsup_server_port = 0; - - osmo_fsm_log_addr(false); - OSMO_ASSERT(msc_vlr_alloc(net) == 0); - OSMO_ASSERT(msc_vlr_start(net) == 0); - OSMO_ASSERT(net->vlr); - OSMO_ASSERT(net->vlr->gsup_client); - msc_subscr_conn_init(); - - net->vlr->ops.tx_lu_acc = fake_vlr_tx_lu_acc; - net->vlr->ops.tx_lu_rej = fake_vlr_tx_lu_rej; - net->vlr->ops.tx_cm_serv_acc = fake_vlr_tx_cm_serv_acc; - net->vlr->ops.tx_cm_serv_rej = fake_vlr_tx_cm_serv_rej; - net->vlr->ops.tx_auth_req = fake_vlr_tx_auth_req; - net->vlr->ops.tx_auth_rej = fake_vlr_tx_auth_rej; - net->vlr->ops.set_ciph_mode = fake_vlr_tx_ciph_mode_cmd; - - clear_vlr(); - - if (optind >= argc) - run_tests(-1); - else { - int arg; - long int nr; - for (arg = optind; arg < argc; arg++) { - nr = strtol(argv[arg], NULL, 10); - if (errno) { - fprintf(stderr, "Invalid argument: %s\n", - argv[arg]); - exit(1); - } - - run_tests(nr); - } - } - - printf("Done\n"); - - talloc_free(the_bts); - - check_talloc(msgb_ctx, tall_bsc_ctx, 9); - return 0; -} diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h deleted file mode 100644 index ae0f83c9a..000000000 --- a/tests/msc_vlr/msc_vlr_tests.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH - * - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#pragma once - -#include -#include - -#include -#include -#include - -extern bool _log_lines; -#define _log(fmt, args...) do { \ - if (_log_lines) \ - fprintf(stderr, " %4d:%s: " fmt "\n", \ - __LINE__, __FILE__, ## args ); \ - else \ - fprintf(stderr, fmt "\n", ## args ); \ - } while (false) - -/* btw means "by the way", the test tells the log what's happening. - * BTW() marks a larger section, btw() is the usual logging. */ -#define BTW(fmt, args...) _log("---\n- " fmt, ## args ) -#define btw(fmt, args...) _log("- " fmt, ## args ) -#define log(fmt, args...) _log(" " fmt, ## args ) - -#define comment_start() fprintf(stderr, "===== %s\n", __func__); -#define comment_end() fprintf(stderr, "===== %s: SUCCESS\n\n", __func__); - -extern struct gsm_subscriber_connection *g_conn; -extern struct gsm_network *net; -extern struct gsm_bts *the_bts; -extern void *msgb_ctx; - -extern enum ran_type rx_from_ran; - -extern const char *gsup_tx_expected; -extern bool gsup_tx_confirmed; - -extern struct msgb *dtap_tx_expected; -extern bool dtap_tx_confirmed; - -enum result_sent { - RES_NONE = 0, - RES_ACCEPT = 1, - RES_REJECT = 2, -}; -extern enum result_sent lu_result_sent; -extern enum result_sent cm_service_result_sent; - -extern bool auth_request_sent; -extern const char *auth_request_expect_rand; -extern const char *auth_request_expect_autn; - -extern bool cipher_mode_cmd_sent; -extern bool cipher_mode_cmd_sent_with_imeisv; - -extern bool paging_sent; -extern bool paging_stopped; - -struct msc_vlr_test_cmdline_opts { - bool verbose; - int run_test_nr; -}; - -typedef void (* msc_vlr_test_func_t )(void); -extern msc_vlr_test_func_t msc_vlr_tests[]; - -struct msgb *msgb_from_hex(const char *label, uint16_t size, const char *hex); - -void clear_vlr(); -bool conn_exists(struct gsm_subscriber_connection *conn); - -void dtap_expect_tx(const char *hex); -void dtap_expect_tx_ussd(char *ussd_text); -void paging_expect_imsi(const char *imsi); -void paging_expect_tmsi(uint32_t tmsi); - -void ms_sends_msg(const char *hex); -void ms_sends_security_mode_complete(); -void gsup_rx(const char *rx_hex, const char *expect_tx_hex); -void send_sms(struct vlr_subscr *receiver, - struct vlr_subscr *sender, - char *str); - -void thwart_rx_non_initial_requests(); - -void check_talloc(void *msgb_ctx, void *tall_bsc_ctx, int expected_blocks); - -#define EXPECT_ACCEPTED(expect_accepted) do { \ - if (g_conn) \ - OSMO_ASSERT(conn_exists(g_conn)); \ - bool accepted = msc_subscr_conn_is_accepted(g_conn); \ - fprintf(stderr, "msc_subscr_conn_is_accepted() == %s\n", \ - accepted ? "true" : "false"); \ - OSMO_ASSERT(accepted == expect_accepted); \ - } while (false) - -#define VERBOSE_ASSERT(val, expect_op, fmt) \ - do { \ - log(#val " == " fmt, (val)); \ - OSMO_ASSERT((val) expect_op); \ - } while (0); - -#define EXPECT_CONN_COUNT(N) VERBOSE_ASSERT(llist_count(&net->subscr_conns), == N, "%d") - -#define gsup_expect_tx(hex) do \ -{ \ - if (gsup_tx_expected) { \ - log("Previous expected GSUP tx was not confirmed!"); \ - OSMO_ASSERT(!gsup_tx_expected); \ - } \ - if (!hex) \ - break; \ - gsup_tx_expected = hex; \ - gsup_tx_confirmed = false; \ -} while (0) - -void fake_time_start(); - -/* as macro to get the test file's source line number */ -#define fake_time_passes(secs, usecs) do \ -{ \ - struct timeval diff; \ - osmo_gettimeofday_override_add(secs, usecs); \ - timersub(&osmo_gettimeofday_override_time, &fake_time_start_time, &diff); \ - btw("Total time passed: %d.%06d s", \ - (int)diff.tv_sec, (int)diff.tv_usec); \ - osmo_timers_prepare(); \ - osmo_timers_update(); \ -} while (0) - -extern const struct timeval fake_time_start_time; diff --git a/tests/nanobts_omlattr/Makefile.am b/tests/nanobts_omlattr/Makefile.am deleted file mode 100644 index b03d50cc1..000000000 --- a/tests/nanobts_omlattr/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(NULL) - -noinst_PROGRAMS = \ - nanobts_omlattr_test \ - $(NULL) - -EXTRA_DIST = \ - nanobts_omlattr_test.ok \ - $(NULL) - -nanobts_omlattr_test_SOURCES = \ - nanobts_omlattr_test.c \ - $(NULL) - -nanobts_omlattr_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libmsc/libmsc.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - -ldbi \ - $(NULL) diff --git a/tests/nanobts_omlattr/nanobts_omlattr_test.c b/tests/nanobts_omlattr/nanobts_omlattr_test.c deleted file mode 100644 index ee138b8f7..000000000 --- a/tests/nanobts_omlattr/nanobts_omlattr_test.c +++ /dev/null @@ -1,284 +0,0 @@ -/* Test OML attribute generator */ - -/* (C) 2016 by sysmocom s.f.m.c. GmbH - * All Rights Reserved - * - * Author: Philipp Maier - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -struct gsm_bts_model bts_model_nanobts = { - .type = GSM_BTS_TYPE_NANOBTS, - .name = "nanobts", - .start = NULL, - .oml_rcvmsg = NULL, - .e1line_bind_ops = NULL, - .nm_att_tlvdef = { - .def = { - /* ip.access specifics */ - [NM_ATT_IPACC_DST_IP] = {TLV_TYPE_FIXED, 4}, - [NM_ATT_IPACC_DST_IP_PORT] = - {TLV_TYPE_FIXED, 2}, - [NM_ATT_IPACC_STREAM_ID] = {TLV_TYPE_TV,}, - [NM_ATT_IPACC_SEC_OML_CFG] = - {TLV_TYPE_FIXED, 6}, - [NM_ATT_IPACC_IP_IF_CFG] = - {TLV_TYPE_FIXED, 8}, - [NM_ATT_IPACC_IP_GW_CFG] = - {TLV_TYPE_FIXED, 12}, - [NM_ATT_IPACC_IN_SERV_TIME] = - {TLV_TYPE_FIXED, 4}, - [NM_ATT_IPACC_LOCATION] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_PAGING_CFG] = - {TLV_TYPE_FIXED, 2}, - [NM_ATT_IPACC_UNIT_ID] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_UNIT_NAME] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_SNMP_CFG] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_PRIM_OML_CFG_LIST] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_NV_FLAGS] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_FREQ_CTRL] = - {TLV_TYPE_FIXED, 2}, - [NM_ATT_IPACC_PRIM_OML_FB_TOUT] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_CUR_SW_CFG] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_TIMING_BUS] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_CGI] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_RAC] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_OBJ_VERSION] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_GPRS_PAGING_CFG] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_NSEI] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_BVCI] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_NSVCI] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_NS_CFG] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_BSSGP_CFG] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_NS_LINK_CFG] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_RLC_CFG] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_ALM_THRESH_LIST] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_MONIT_VAL_LIST] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_TIB_CONTROL] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_SUPP_FEATURES] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_CODING_SCHEMES] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_RLC_CFG_2] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_HEARTB_TOUT] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_UPTIME] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_RLC_CFG_3] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_SSL_CFG] = {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_SEC_POSSIBLE] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_IML_SSL_STATE] = - {TLV_TYPE_TL16V}, - [NM_ATT_IPACC_REVOC_DATE] = {TLV_TYPE_TL16V}, - }, - }, -}; - -static void test_nanobts_attr_bts_get(struct gsm_bts *bts, uint8_t *expected) -{ - struct msgb *msgb; - - printf("Testing nanobts_attr_bts_get()...\n"); - - msgb = nanobts_attr_bts_get(bts); - printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len)); - printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len)); - OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0); - msgb_free(msgb); - - printf("ok.\n"); - printf("\n"); -} - -static void test_nanobts_attr_nse_get(struct gsm_bts *bts, uint8_t *expected) -{ - struct msgb *msgb; - - printf("Testing nanobts_attr_nse_get()...\n"); - - msgb = nanobts_attr_nse_get(bts); - printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len)); - printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len)); - OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0); - msgb_free(msgb); - - printf("ok.\n"); - printf("\n"); -} - -static void test_nanobts_attr_cell_get(struct gsm_bts *bts, uint8_t *expected) -{ - struct msgb *msgb; - - printf("Testing nanobts_attr_cell_get()...\n"); - - msgb = nanobts_attr_cell_get(bts); - printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len)); - printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len)); - OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0); - msgb_free(msgb); - - printf("ok.\n"); - printf("\n"); -} - -static void test_nanobts_attr_nscv_get(struct gsm_bts *bts, uint8_t *expected) -{ - struct msgb *msgb; - - printf("Testing nanobts_attr_nscv_get()...\n"); - - msgb = nanobts_attr_nscv_get(bts); - printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len)); - printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len)); - OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0); - msgb_free(msgb); - - printf("ok.\n"); - printf("\n"); -} - -static void test_nanobts_attr_radio_get(struct gsm_bts *bts, - struct gsm_bts_trx *trx, - uint8_t *expected) -{ - struct msgb *msgb; - - printf("Testing nanobts_attr_nscv_get()...\n"); - - msgb = nanobts_attr_radio_get(bts, trx); - printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len)); - printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len)); - OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0); - msgb_free(msgb); - - printf("ok.\n"); - printf("\n"); -} - -int main(int argc, char **argv) -{ - void *ctx; - - struct gsm_bts *bts; - struct gsm_network *net; - struct gsm_bts_trx *trx; - - ctx = talloc_named_const(NULL, 0, "ctx"); - - /* Allocate environmental structs (bts, net, trx) */ - net = talloc_zero(ctx, struct gsm_network); - INIT_LLIST_HEAD(&net->bts_list); - gsm_bts_model_register(&bts_model_nanobts); - bts = gsm_bts_alloc_register(net, GSM_BTS_TYPE_NANOBTS, 63); - OSMO_ASSERT(bts); - trx = talloc_zero(ctx, struct gsm_bts_trx); - - /* Parameters needed by nanobts_attr_bts_get() */ - bts->rach_b_thresh = -1; - bts->rach_ldavg_slots = -1; - bts->c0->arfcn = 866; - bts->cell_identity = 1337; - bts->network->country_code = 1; - bts->network->network_code = 1; - bts->location_area_code = 1; - bts->gprs.rac = 0; - uint8_t attr_bts_expected[] = - { 0x19, 0x55, 0x5b, 0x61, 0x67, 0x6d, 0x73, 0x18, 0x06, 0x0e, 0x00, - 0x02, 0x01, 0x20, 0x33, 0x1e, 0x24, 0x24, 0xa8, 0x34, 0x21, - 0xa8, 0x1f, 0x3f, 0x25, - 0x00, 0x01, 0x0a, 0x0c, 0x0a, 0x0b, 0x01, 0x2a, 0x0a, 0x2b, - 0x03, 0xe8, 0x0a, 0x80, - 0x23, 0x0a, 0x08, 0x03, 0x62, 0x09, 0x3f, 0x99, 0x00, 0x07, - 0x00, 0xf1, 0x10, 0x00, - 0x01, 0x05, 0x39 - }; - - /* Parameters needed to test nanobts_attr_nse_get() */ - bts->gprs.nse.nsei = 101; - uint8_t attr_nse_expected[] = - { 0x9d, 0x00, 0x02, 0x00, 0x65, 0xa0, 0x00, 0x07, 0x03, 0x03, 0x03, - 0x03, 0x1e, 0x03, 0x0a, 0xa1, 0x00, 0x0b, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x0a, 0x03, - 0x0a, 0x03, 0x0a, 0x03 - }; - - /* Parameters needed to test nanobts_attr_cell_get() */ - bts->gprs.rac = 0x00; - bts->gprs.cell.bvci = 2; - bts->gprs.mode = BTS_GPRS_GPRS; - uint8_t attr_cell_expected[] = - { 0x9a, 0x00, 0x01, 0x00, 0x9c, 0x00, 0x02, 0x05, 0x03, 0x9e, 0x00, - 0x02, 0x00, 0x02, 0xa3, 0x00, 0x09, 0x14, 0x05, 0x05, 0xa0, - 0x05, 0x0a, 0x04, 0x08, - 0x0f, 0xa8, 0x00, 0x02, 0x0f, 0x00, 0xa9, 0x00, 0x05, 0x00, - 0xfa, 0x00, 0xfa, 0x02 - }; - - /* Parameters needed to test nanobts_attr_nscv_get() */ - bts->gprs.nsvc[0].nsvci = 0x65; - bts->gprs.nsvc[0].remote_port = 0x59d8; - bts->gprs.nsvc[0].remote_ip = 0x0a090165; - bts->gprs.nsvc[0].local_port = 0x5a3c; - uint8_t attr_nscv_expected[] = - { 0x9f, 0x00, 0x02, 0x00, 0x65, 0xa2, 0x00, 0x08, 0x59, 0xd8, 0x0a, - 0x09, 0x01, 0x65, 0x5a, 0x3c - }; - - /* Parameters needed to test nanobts_attr_radio_get() */ - trx->arfcn = 866; - trx->max_power_red = 22; - bts->c0->max_power_red = 22; - uint8_t attr_radio_expected[] = - { 0x2d, 0x0b, 0x05, 0x00, 0x02, 0x03, 0x62 }; - - /* Run tests */ - test_nanobts_attr_bts_get(bts, attr_bts_expected); - test_nanobts_attr_nse_get(bts, attr_nse_expected); - test_nanobts_attr_cell_get(bts, attr_cell_expected); - test_nanobts_attr_nscv_get(bts, attr_nscv_expected); - test_nanobts_attr_radio_get(bts, trx, attr_radio_expected); - - printf("Done\n"); - talloc_free(bts); - talloc_free(net); - talloc_free(trx); - talloc_report_full(ctx, stderr); - OSMO_ASSERT(talloc_total_blocks(ctx) == 1); - return 0; -} - -/* stubs */ -struct osmo_prim_hdr; -int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx) -{ - abort(); -} diff --git a/tests/nanobts_omlattr/nanobts_omlattr_test.ok b/tests/nanobts_omlattr/nanobts_omlattr_test.ok deleted file mode 100644 index 91b655f8f..000000000 --- a/tests/nanobts_omlattr/nanobts_omlattr_test.ok +++ /dev/null @@ -1,26 +0,0 @@ -Testing nanobts_attr_bts_get()... -result= 19555b61676d7318060e00020120331e2424a83421a81f3f2500010a0c0a0b012a0a2b03e80a80230a080362093f99000700f11000010539 -expected=19555b61676d7318060e00020120331e2424a83421a81f3f2500010a0c0a0b012a0a2b03e80a80230a080362093f99000700f11000010539 -ok. - -Testing nanobts_attr_nse_get()... -result= 9d00020065a00007030303031e030aa1000b03030303030a030a030a03 -expected=9d00020065a00007030303031e030aa1000b03030303030a030a030a03 -ok. - -Testing nanobts_attr_cell_get()... -result= 9a0001009c000205039e00020002a30009140505a0050a04080fa800020f00a9000500fa00fa02 -expected=9a0001009c000205039e00020002a30009140505a0050a04080fa800020f00a9000500fa00fa02 -ok. - -Testing nanobts_attr_nscv_get()... -result= 9f00020065a2000859d80a0901655a3c -expected=9f00020065a2000859d80a0901655a3c -ok. - -Testing nanobts_attr_nscv_get()... -result= 2d0b0500020362 -expected=2d0b0500020362 -ok. - -Done diff --git a/tests/slhc/Makefile.am b/tests/slhc/Makefile.am deleted file mode 100644 index 32a3cc447..000000000 --- a/tests/slhc/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -AM_CFLAGS=-Wall -ggdb3 $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBCARES_CFLAGS) - -EXTRA_DIST = slhc_test.ok - -noinst_PROGRAMS = slhc_test - -slhc_test_SOURCES = slhc_test.c - -slhc_test_LDADD = \ - $(top_builddir)/src/gprs/slhc.o \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) - - diff --git a/tests/slhc/slhc_test.c b/tests/slhc/slhc_test.c deleted file mode 100644 index d2e1cd9dc..000000000 --- a/tests/slhc/slhc_test.c +++ /dev/null @@ -1,272 +0,0 @@ -/* Test SLHC/RFC1144 TCP/IP Header compression/decompression */ - -/* (C) 2016 by sysmocom s.f.m.c. GmbH - * All Rights Reserved - * - * Author: Philipp Maier - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#include -#include - -#include -#include - -#include - -#include -#include -#include - -/* Number of compression slots (S0-1) */ -#define SLOTS 8 - -/* Maximum packet bytes to display */ -#define DISP_MAX_BYTES 100 - -/* Sample packets to test with */ -#define PACKETS_LEN 15 -char *packets[] = { - /* With TCP Option 10 (Timestamps) in place (forces UNCOMPRESSED_TCP) */ - "4510004046dd40004006a9a7c0a8646ec0a864640017ad8b81980100f3ac984d801800e32a1600000101080a000647de06d1bf5efffd18fffd20fffd23fffd27", - "4510005b46de40004006a98bc0a8646ec0a864640017ad8b8198010cf3ac984d801800e3867500000101080a000647df06d1bf61fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0", - "4510003746df40004006a9aec0a8646ec0a864640017ad8b81980133f3ac989f801800e35fd700000101080a000647e106d1bf63fffd01", - "4510003746e040004006a9adc0a8646ec0a864640017ad8b81980136f3ac98a2801800e35fd200000101080a000647e106d1bf64fffb01", - "4510007446e140004006a96fc0a8646ec0a864640017ad8b81980139f3ac98a5801800e37b9b00000101080a000647e206d1bf640d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a0d0a", - "4510004246e240004006a9a0c0a8646ec0a864640017ad8b81980179f3ac98a5801800e3dab000000101080a000647ec06d1bf6f706f6c6c7578206c6f67696e3a20", - /* Regular TCP packets (COMPRESSED_TCP) */ - "4510003446dd40004006a9b3c0a8646ec0a864640017ad8b81980100f3ac984d501800e371410000fffd18fffd20fffd23fffd27", - "4510004f46de40004006a997c0a8646ec0a864640017ad8b8198010cf3ac984d501800e3cda40000fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0", - "4510002b46df40004006a9bac0a8646ec0a864640017ad8b81980133f3ac989f501800e3a70a0000fffd01", - "4510002b46e040004006a9b9c0a8646ec0a864640017ad8b81980136f3ac98a2501800e3a7060000fffb01", - "4510006846e140004006a97bc0a8646ec0a864640017ad8b81980139f3ac98a5501800e3c2d000000d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a0d0a", - "4510003646e240004006a9acc0a8646ec0a864640017ad8b81980179f3ac98a5501800e321fb0000706f6c6c7578206c6f67696e3a20", - /* UDP packets (TYPE_IP */ - "450000396e0b40004011a0310a0901650a09170105da003500255489a60f01000001000000000000076f736d6f636f6d036f72670000010001", - "450000dc9eeb00004011aeae0a0917010a090165003505da00c83fbaa60f81800001000100030004076f736d6f636f6d036f72670000010001c00c00010001000079be0004904c2b4cc00c000200010000173d00130773756e6265616d08676e756d6f6e6b73c014c00c000200010000173d000603646e73c041c00c000200010000173d000a0767616e65736861c041c058000100010000173d0004d55f2e45c058001c00010000173d0010200107800045f0460000000000690001c06a0001000100006a710004d55f1b78c039000100010000173d000453ecb2cb", - "45000037652340004011a91b0a0901650a091701ef1b0035002376a2c3910100000100000000000006676f6f676c650264650000010001", - "0050b6162c10000db93a3ff908004500004726a6000038114083080808080a0901650035ef1b00338a8cc3918180000100010000000006676f6f676c650264650000010001c00c000100010000012b0004d83ad503", -}; - -/* Compress a packet using Van Jacobson RFC1144 header compression */ -static int compress(uint8_t *data_o, uint8_t *data_i, int len, - struct slcompress *comp) -{ - uint8_t *comp_ptr; /* Not used */ - int compr_len; - - /* Create a working copy of the incoming data */ - memcpy(data_o, data_i, len); - - /* Run compressor */ - compr_len = slhc_compress(comp, data_i, len, data_o, &comp_ptr, 0); - return compr_len; -} - -/* Expand a packet using Van Jacobson RFC1144 header compression */ -static int expand(uint8_t *data_o, uint8_t *data_i, int len, - struct slcompress *comp) -{ - int data_decompressed_len; - - /* Create a working copy of the incoming data */ - memcpy(data_o, data_i, len); - - /* Handle an uncompressed packet (learn header information */ - if ((data_i[0] & SL_TYPE_UNCOMPRESSED_TCP) == SL_TYPE_UNCOMPRESSED_TCP) { - data_o[0] &= 0x4F; - data_decompressed_len = slhc_remember(comp, data_o, len); - return data_decompressed_len; - } - - /* Uncompress compressed packets */ - else if (data_o[0] & SL_TYPE_COMPRESSED_TCP) { - data_decompressed_len = slhc_uncompress(comp, data_o, len); - return data_decompressed_len; - } - - /* Regular or unknown packets will not be touched */ - return len; -} - -/* Calculate IP Header checksum */ -static uint16_t calc_ip_csum(uint8_t *data, int len) -{ - int i; - uint32_t accumulator = 0; - uint16_t *pointer = (uint16_t *) data; - - for (i = len; i > 1; i -= 2) { - accumulator += *pointer; - pointer++; - } - - if (len % 2) - accumulator += *pointer; - - accumulator = (accumulator & 0xffff) + ((accumulator >> 16) & 0xffff); - accumulator += (accumulator >> 16) & 0xffff; - return (~accumulator); -} - -/* Calculate TCP/IP checksum */ -static uint16_t calc_tcpip_csum(const void *ctx, uint8_t *packet, int len) -{ - uint8_t *buf; - uint16_t csum; - - buf = talloc_zero_size(ctx, len); - memset(buf, 0, len); - memcpy(buf, packet + 12, 8); - buf[9] = packet[9]; - buf[11] = (len - 20) & 0xFF; - buf[10] = (len - 20) >> 8 & 0xFF; - memcpy(buf + 12, packet + 20, len - 20); - csum = calc_ip_csum(buf, len - 20 + 12); - talloc_free(buf); - return csum; -} - -/* Check TCP/IP packet */ -static void check_packet(const void *ctx, uint8_t *packet, int len) -{ - /* Check IP header */ - OSMO_ASSERT(len > 20); - OSMO_ASSERT(calc_ip_csum(packet, 20) == 0); - - printf("packet[9]=%02x\n", packet[9]); - - /* Check TCP packet */ - if (packet[9] != 0x06) - return; - OSMO_ASSERT(len > 40); - OSMO_ASSERT(calc_tcpip_csum(ctx, packet, len) == 0); -} - -/* Compress / Decompress packets */ -static void test_slhc(const void *ctx) -{ - char packet_ascii[2048]; - int i; - - struct slcompress *comp; - uint8_t packet[1024]; - int packet_len; - uint8_t packet_compr[1024]; - int packet_compr_len; - uint8_t packet_decompr[1024]; - int packet_decompr_len; - - printf("Allocating compression state...\n"); - comp = slhc_init(ctx, SLOTS, SLOTS); - OSMO_ASSERT(comp); - - for (i = 0; i < PACKETS_LEN; i++) { - printf("Testing with packet No. %d\n", i); - - /* Read input file */ - memset(packet_ascii, 0, sizeof(packet_ascii)); - memset(packet, 0, sizeof(packet)); - memset(packet_compr, 0, sizeof(packet_compr)); - memset(packet_decompr, 0, sizeof(packet_decompr)); - - OSMO_ASSERT(strlen(packets[i]) < sizeof(packet_ascii)); - strcpy(packet_ascii, packets[i]); - - packet_len = - osmo_hexparse(packet_ascii, packet, sizeof(packet)); - check_packet(ctx, packet, packet_len); - - /* Run compression/decompression algorithm */ - printf("Compressing...\n"); - packet_compr_len = - compress(packet_compr, packet, packet_len, comp); - printf("Decompressing...\n"); - packet_decompr_len = - expand(packet_decompr, packet_compr, packet_compr_len, - comp); - OSMO_ASSERT(packet_decompr_len == packet_len); - check_packet(ctx, packet_decompr, packet_decompr_len); - - /* Display results */ - printf("Results:\n"); - if (packet_compr_len > DISP_MAX_BYTES) - packet_compr_len = DISP_MAX_BYTES; - if (packet_len > DISP_MAX_BYTES) - packet_len = DISP_MAX_BYTES; - if (packet_decompr_len > DISP_MAX_BYTES) - packet_decompr_len = DISP_MAX_BYTES; - printf("Original Packet: (%i bytes) %s\n", packet_len, - osmo_hexdump_nospc(packet, packet_len)); - printf("DecompressedPacket: (%i bytes) %s\n", - packet_decompr_len, osmo_hexdump_nospc(packet_decompr, - packet_decompr_len)); - printf("CompressedPacket: (%i bytes) %s\n", packet_compr_len, - osmo_hexdump_nospc(packet_compr, packet_compr_len)); - slhc_o_status(comp); - slhc_o_status(comp); - - printf("\n"); - } - - printf("Freeing compression state...\n"); - slhc_free(comp); - printf("\n"); -} - -static struct log_info_cat gprs_categories[] = { - [DSNDCP] = { - .name = "DSNDCP", - .description = - "GPRS Sub-Network Dependent Control Protocol (SNDCP)", - .enabled = 1,.loglevel = LOGL_DEBUG, - }, - [DSLHC] = { - .name = "DSLHC", - .description = - "Van Jacobson RFC1144 TCP/IP header compression (SLHC)", - .enabled = 1,.loglevel = LOGL_DEBUG, - } -}; - -static struct log_info info = { - .cat = gprs_categories, - .num_cat = ARRAY_SIZE(gprs_categories), -}; - -int main(int argc, char **argv) -{ - void *ctx; - - osmo_init_logging(&info); - - ctx = talloc_named_const(NULL, 0, "slhc_ctx"); - - test_slhc(ctx); - - printf("Done\n"); - - talloc_report_full(ctx, stderr); - OSMO_ASSERT(talloc_total_blocks(ctx) == 1); - return 0; -} - -/* stubs */ -struct osmo_prim_hdr; -int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx) -{ - abort(); -} diff --git a/tests/slhc/slhc_test.ok b/tests/slhc/slhc_test.ok deleted file mode 100644 index 71f48a179..000000000 --- a/tests/slhc/slhc_test.ok +++ /dev/null @@ -1,154 +0,0 @@ -Allocating compression state... -Testing with packet No. 0 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (64 bytes) 4510004046dd40004006a9a7c0a8646ec0a864640017ad8b81980100f3ac984d801800e32a1600000101080a000647de06d1bf5efffd18fffd20fffd23fffd27 -DecompressedPacket: (64 bytes) 4510004046dd40004006a9a7c0a8646ec0a864640017ad8b81980100f3ac984d801800e32a1600000101080a000647de06d1bf5efffd18fffd20fffd23fffd27 -CompressedPacket: (64 bytes) 7510004046dd40004000a9a7c0a8646ec0a864640017ad8b81980100f3ac984d801800e32a1600000101080a000647de06d1bf5efffd18fffd20fffd23fffd27 - -Testing with packet No. 1 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (91 bytes) 4510005b46de40004006a98bc0a8646ec0a864640017ad8b8198010cf3ac984d801800e3867500000101080a000647df06d1bf61fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0 -DecompressedPacket: (91 bytes) 4510005b46de40004006a98bc0a8646ec0a864640017ad8b8198010cf3ac984d801800e3867500000101080a000647df06d1bf61fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0 -CompressedPacket: (91 bytes) 7510005b46de40004000a98bc0a8646ec0a864640017ad8b8198010cf3ac984d801800e3867500000101080a000647df06d1bf61fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0 - -Testing with packet No. 2 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (55 bytes) 4510003746df40004006a9aec0a8646ec0a864640017ad8b81980133f3ac989f801800e35fd700000101080a000647e106d1bf63fffd01 -DecompressedPacket: (55 bytes) 4510003746df40004006a9aec0a8646ec0a864640017ad8b81980133f3ac989f801800e35fd700000101080a000647e106d1bf63fffd01 -CompressedPacket: (55 bytes) 7510003746df40004000a9aec0a8646ec0a864640017ad8b81980133f3ac989f801800e35fd700000101080a000647e106d1bf63fffd01 - -Testing with packet No. 3 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (55 bytes) 4510003746e040004006a9adc0a8646ec0a864640017ad8b81980136f3ac98a2801800e35fd200000101080a000647e106d1bf64fffb01 -DecompressedPacket: (55 bytes) 4510003746e040004006a9adc0a8646ec0a864640017ad8b81980136f3ac98a2801800e35fd200000101080a000647e106d1bf64fffb01 -CompressedPacket: (55 bytes) 7510003746e040004000a9adc0a8646ec0a864640017ad8b81980136f3ac98a2801800e35fd200000101080a000647e106d1bf64fffb01 - -Testing with packet No. 4 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (100 bytes) 4510007446e140004006a96fc0a8646ec0a864640017ad8b81980139f3ac98a5801800e37b9b00000101080a000647e206d1bf640d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d -DecompressedPacket: (100 bytes) 4510007446e140004006a96fc0a8646ec0a864640017ad8b81980139f3ac98a5801800e37b9b00000101080a000647e206d1bf640d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d -CompressedPacket: (100 bytes) 7510007446e140004000a96fc0a8646ec0a864640017ad8b81980139f3ac98a5801800e37b9b00000101080a000647e206d1bf640d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d - -Testing with packet No. 5 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (66 bytes) 4510004246e240004006a9a0c0a8646ec0a864640017ad8b81980179f3ac98a5801800e3dab000000101080a000647ec06d1bf6f706f6c6c7578206c6f67696e3a20 -DecompressedPacket: (66 bytes) 4510004246e240004006a9a0c0a8646ec0a864640017ad8b81980179f3ac98a5801800e3dab000000101080a000647ec06d1bf6f706f6c6c7578206c6f67696e3a20 -CompressedPacket: (66 bytes) 7510004246e240004000a9a0c0a8646ec0a864640017ad8b81980179f3ac98a5801800e3dab000000101080a000647ec06d1bf6f706f6c6c7578206c6f67696e3a20 - -Testing with packet No. 6 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (52 bytes) 4510003446dd40004006a9b3c0a8646ec0a864640017ad8b81980100f3ac984d501800e371410000fffd18fffd20fffd23fffd27 -DecompressedPacket: (52 bytes) 4510003446dd40004006a9b3c0a8646ec0a864640017ad8b81980100f3ac984d501800e371410000fffd18fffd20fffd23fffd27 -CompressedPacket: (52 bytes) 7510003446dd40004000a9b3c0a8646ec0a864640017ad8b81980100f3ac984d501800e371410000fffd18fffd20fffd23fffd27 - -Testing with packet No. 7 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (79 bytes) 4510004f46de40004006a997c0a8646ec0a864640017ad8b8198010cf3ac984d501800e3cda40000fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0 -DecompressedPacket: (79 bytes) 4510004f46de40004006a997c0a8646ec0a864640017ad8b8198010cf3ac984d501800e3cda40000fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0 -CompressedPacket: (43 bytes) df00cda4fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0 - -Testing with packet No. 8 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (43 bytes) 4510002b46df40004006a9bac0a8646ec0a864640017ad8b81980133f3ac989f501800e3a70a0000fffd01 -DecompressedPacket: (43 bytes) 4510002b46df40004006a9bac0a8646ec0a864640017ad8b81980133f3ac989f501800e3a70a0000fffd01 -CompressedPacket: (9 bytes) dc00a70a5227fffd01 - -Testing with packet No. 9 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (43 bytes) 4510002b46e040004006a9b9c0a8646ec0a864640017ad8b81980136f3ac98a2501800e3a7060000fffb01 -DecompressedPacket: (43 bytes) 4510002b46e040004006a9b9c0a8646ec0a864640017ad8b81980136f3ac98a2501800e3a7060000fffb01 -CompressedPacket: (7 bytes) db00a706fffb01 - -Testing with packet No. 10 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (100 bytes) 4510006846e140004006a97bc0a8646ec0a864640017ad8b81980139f3ac98a5501800e3c2d000000d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d -DecompressedPacket: (100 bytes) 4510006846e140004006a97bc0a8646ec0a864640017ad8b81980139f3ac98a5501800e3c2d000000d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d -CompressedPacket: (68 bytes) db00c2d00d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a0d0a - -Testing with packet No. 11 -packet[9]=06 -Compressing... -Decompressing... -packet[9]=06 -Results: -Original Packet: (54 bytes) 4510003646e240004006a9acc0a8646ec0a864640017ad8b81980179f3ac98a5501800e321fb0000706f6c6c7578206c6f67696e3a20 -DecompressedPacket: (54 bytes) 4510003646e240004006a9acc0a8646ec0a864640017ad8b81980179f3ac98a5501800e321fb0000706f6c6c7578206c6f67696e3a20 -CompressedPacket: (18 bytes) df0021fb706f6c6c7578206c6f67696e3a20 - -Testing with packet No. 12 -packet[9]=11 -Compressing... -Decompressing... -packet[9]=11 -Results: -Original Packet: (57 bytes) 450000396e0b40004011a0310a0901650a09170105da003500255489a60f01000001000000000000076f736d6f636f6d036f72670000010001 -DecompressedPacket: (57 bytes) 450000396e0b40004011a0310a0901650a09170105da003500255489a60f01000001000000000000076f736d6f636f6d036f72670000010001 -CompressedPacket: (57 bytes) 450000396e0b40004011a0310a0901650a09170105da003500255489a60f01000001000000000000076f736d6f636f6d036f72670000010001 - -Testing with packet No. 13 -packet[9]=11 -Compressing... -Decompressing... -packet[9]=11 -Results: -Original Packet: (100 bytes) 450000dc9eeb00004011aeae0a0917010a090165003505da00c83fbaa60f81800001000100030004076f736d6f636f6d036f72670000010001c00c00010001000079be0004904c2b4cc00c000200010000173d00130773756e6265616d08676e756d6f6e -DecompressedPacket: (100 bytes) 450000dc9eeb00004011aeae0a0917010a090165003505da00c83fbaa60f81800001000100030004076f736d6f636f6d036f72670000010001c00c00010001000079be0004904c2b4cc00c000200010000173d00130773756e6265616d08676e756d6f6e -CompressedPacket: (100 bytes) 450000dc9eeb00004011aeae0a0917010a090165003505da00c83fbaa60f81800001000100030004076f736d6f636f6d036f72670000010001c00c00010001000079be0004904c2b4cc00c000200010000173d00130773756e6265616d08676e756d6f6e - -Testing with packet No. 14 -packet[9]=11 -Compressing... -Decompressing... -packet[9]=11 -Results: -Original Packet: (55 bytes) 45000037652340004011a91b0a0901650a091701ef1b0035002376a2c3910100000100000000000006676f6f676c650264650000010001 -DecompressedPacket: (55 bytes) 45000037652340004011a91b0a0901650a091701ef1b0035002376a2c3910100000100000000000006676f6f676c650264650000010001 -CompressedPacket: (55 bytes) 45000037652340004011a91b0a0901650a091701ef1b0035002376a2c3910100000100000000000006676f6f676c650264650000010001 - -Freeing compression state... - -Done diff --git a/tests/smpp/Makefile.am b/tests/smpp/Makefile.am deleted file mode 100644 index 508270753..000000000 --- a/tests/smpp/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - -I$(top_srcdir)/src/libmsc \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOSCCP_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(LIBSMPP34_CFLAGS) \ - $(NULL) - -AM_LDFLAGS = \ - $(COVERAGE_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - smpp_test.ok \ - smpp_test.err \ - $(NULL) - -noinst_PROGRAMS = \ - smpp_test \ - $(NULL) - -smpp_test_SOURCES = \ - smpp_test.c \ - $(top_builddir)/src/libmsc/smpp_utils.c \ - $(NULL) - -smpp_test_LDADD = \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(NULL) diff --git a/tests/smpp/smpp_test.c b/tests/smpp/smpp_test.c deleted file mode 100644 index 62fa9d2e9..000000000 --- a/tests/smpp/smpp_test.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * (C) 2013 by Holger Hans Peter Freyther - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include - -#include - -#include -#include - -#include "smpp_smsc.h" - -struct coding_test { - uint8_t dcs; - uint8_t coding; - int mode; - int res; -}; - -static struct coding_test codecs[] = { - { .dcs = 0xf6 , .coding = 0x02, .mode = MODE_8BIT, .res = 0 }, - { .dcs = 0xf2 , .coding = 0x01, .mode = MODE_7BIT, .res = 0 }, - { .dcs = 0x02 , .coding = 0x01, .mode = MODE_7BIT, .res = 0 }, - { .dcs = 0x06 , .coding = 0x02, .mode = MODE_8BIT, .res = 0 }, - { .dcs = 0x0A , .coding = 0x08, .mode = MODE_8BIT, .res = 0 }, - { .dcs = 0x0E , .coding = 0xFF, .mode = 0xFF, .res = -1 }, - { .dcs = 0xE0 , .coding = 0xFF, .mode = 0xFF, .res = -1 }, -}; - -static void test_coding_scheme(void) -{ - int i; - printf("Testing coding scheme support\n"); - - for (i = 0; i < ARRAY_SIZE(codecs); ++i) { - uint8_t coding; - int mode, res; - - res = smpp_determine_scheme(codecs[i].dcs, &coding, &mode); - OSMO_ASSERT(res == codecs[i].res); - if (res != -1) { - OSMO_ASSERT(mode == codecs[i].mode); - OSMO_ASSERT(coding == codecs[i].coding); - } - } -} - -int main(int argc, char **argv) -{ - osmo_init_logging(&log_info); - log_set_use_color(osmo_stderr_target, 0); - log_set_print_filename(osmo_stderr_target, 0); - - test_coding_scheme(); - return EXIT_SUCCESS; -} diff --git a/tests/smpp/smpp_test.err b/tests/smpp/smpp_test.err deleted file mode 100644 index ec966ba47..000000000 --- a/tests/smpp/smpp_test.err +++ /dev/null @@ -1,2 +0,0 @@ -SMPP MO Unknown Data Coding 0x0e -SMPP MO Unknown Data Coding 0xe0 diff --git a/tests/smpp/smpp_test.ok b/tests/smpp/smpp_test.ok deleted file mode 100644 index fd44804d1..000000000 --- a/tests/smpp/smpp_test.ok +++ /dev/null @@ -1 +0,0 @@ -Testing coding scheme support diff --git a/tests/smpp_test_runner.py b/tests/smpp_test_runner.py deleted file mode 100644 index 7a3a342ec..000000000 --- a/tests/smpp_test_runner.py +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env python - -# (C) 2014 by Holger Hans Peter Freyther -# based on vty_test_runner.py: -# (C) 2013 by Katerina Barone-Adesi -# (C) 2013 by Holger Hans Peter Freyther -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import os -import sys -import time -import unittest -import socket - -import osmopy.obscvty as obscvty -import osmopy.osmoutil as osmoutil - -confpath = os.path.join(sys.path[0], '..') - -class TestVTYBase(unittest.TestCase): - - def vty_command(self): - raise Exception("Needs to be implemented by a subclass") - - def vty_app(self): - raise Exception("Needs to be implemented by a subclass") - - def setUp(self): - osmo_vty_cmd = self.vty_command()[:] - config_index = osmo_vty_cmd.index('-c') - if config_index: - cfi = config_index + 1 - osmo_vty_cmd[cfi] = os.path.join(confpath, osmo_vty_cmd[cfi]) - - try: - self.proc = osmoutil.popen_devnull(osmo_vty_cmd) - except OSError: - print >> sys.stderr, "Current directory: %s" % os.getcwd() - print >> sys.stderr, "Consider setting -b" - - appstring = self.vty_app()[2] - appport = self.vty_app()[0] - self.vty = obscvty.VTYInteract(appstring, "127.0.0.1", appport) - - def tearDown(self): - if self.vty: - self.vty._close_socket() - self.vty = None - osmoutil.end_proc(self.proc) - - -class TestSMPPMSC(TestVTYBase): - - def vty_command(self): - return ["./src/osmo-msc/osmo-msc", "-c", - "doc/examples/osmo-msc/osmo-msc.cfg"] - - def vty_app(self): - return (4254, "./src/osmo-msc/osmo-msc", "OsmoMSC", "msc") - - def testSMPPCrashes(self): - # Enable the configuration - self.vty.enable() - self.assertTrue(self.vty.verify("configure terminal", [''])) - self.assertEquals(self.vty.node(), 'config') - - self.assertTrue(self.vty.verify('smpp', [''])) - self.assertEquals(self.vty.node(), 'config-smpp') - self.assertTrue(self.vty.verify('system-id test', [''])) - self.assertTrue(self.vty.verify('local-tcp-port 2775', [''])) - self.assertTrue(self.vty.verify('esme test', [''])) - self.assertEquals(self.vty.node(), 'config-smpp-esme') - self.assertTrue(self.vty.verify('default-route', [''])) - self.assertTrue(self.vty.verify('end', [''])) - - # MSC should listen to 2775 now! - sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sck.setblocking(1) - sck.connect(('0.0.0.0', 2775)) - sck.sendall('\x00\x00\x00\x02\x00') - sck.close() - - # Check if the VTY is still there - self.vty.verify('disable',['']) - - # Now for the second packet - sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sck.setblocking(1) - sck.connect(('0.0.0.0', 2775)) - sck.sendall('\x00\x01\x00\x01\x01') - sck.close() - - self.vty.verify('enable',['']) - -if __name__ == '__main__': - import argparse - import sys - - workdir = '.' - - parser = argparse.ArgumentParser() - parser.add_argument("-v", "--verbose", dest="verbose", - action="store_true", help="verbose mode") - parser.add_argument("-p", "--pythonconfpath", dest="p", - help="searchpath for config") - parser.add_argument("-w", "--workdir", dest="w", - help="Working directory") - args = parser.parse_args() - - verbose_level = 1 - if args.verbose: - verbose_level = 2 - - if args.w: - workdir = args.w - - if args.p: - confpath = args.p - - print "confpath %s, workdir %s" % (confpath, workdir) - os.chdir(workdir) - print "Running tests for specific SMPP" - suite = unittest.TestSuite() - suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestSMPPMSC)) - res = unittest.TextTestRunner(verbosity=verbose_level).run(suite) - sys.exit(len(res.errors) + len(res.failures)) diff --git a/tests/sms_queue/Makefile.am b/tests/sms_queue/Makefile.am deleted file mode 100644 index 3cc9fdcf0..000000000 --- a/tests/sms_queue/Makefile.am +++ /dev/null @@ -1,49 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOSIGTRAN_CFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - sms_queue_test.ok \ - sms_queue_test.err \ - $(NULL) - -noinst_PROGRAMS = \ - sms_queue_test \ - $(NULL) - -sms_queue_test_SOURCES = \ - sms_queue_test.c \ - $(NULL) - -sms_queue_test_LDADD = \ - $(top_builddir)/src/libmsc/libmsc.a \ - $(top_builddir)/src/libvlr/libvlr.a \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libmgcp/libmgcp.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/tests/libiudummy/libiudummy.a \ - $(LIBSMPP34_LIBS) \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBCRYPTO_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOSIGTRAN_LIBS) \ - -ldbi \ - -lrt \ - $(NULL) - -sms_queue_test_LDFLAGS = \ - -Wl,--wrap=db_sms_get_next_unsent_rr_msisdn \ - $(NULL) diff --git a/tests/sms_queue/sms_queue_test.c b/tests/sms_queue/sms_queue_test.c deleted file mode 100644 index af25b0645..000000000 --- a/tests/sms_queue/sms_queue_test.c +++ /dev/null @@ -1,215 +0,0 @@ -/* Test Osmocom SMS queue */ - -/* - * (C) 2017 by sysmocom s.f.m.c. GmbH - * All Rights Reserved - * - * Author: Neels Hofmeyr - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include - -#include -#include - -static void *talloc_ctx = NULL; - -struct gsm_sms *smsq_take_next_sms(struct gsm_network *net, - char *last_msisdn, - size_t last_msisdn_buflen); - -static void _test_take_next_sms_print(int i, - struct gsm_sms *sms, - const char *last_msisdn) -{ - printf("#%d: ", i); - if (sms) - printf("sending SMS to %s", sms->text); - else - printf("no SMS to send"); - printf(" (last_msisdn='%s')\n", last_msisdn? last_msisdn : "NULL"); -} - -static struct gsm_sms fake_sms = { 0 }; - -struct { - const char *msisdn; - int nr_of_sms; - int failed_attempts; - bool vsub_attached; -} fake_sms_db[] = { - { - .msisdn = "1111", - .nr_of_sms = 0, - .vsub_attached = true, - }, - { - .msisdn = "2222", - .nr_of_sms = 2, - .failed_attempts = 2, - .vsub_attached = true, - }, - { - .msisdn = "3333", - .nr_of_sms = 2, - .failed_attempts = 3, - .vsub_attached = true, - }, - { - .msisdn = "4444", - .nr_of_sms = 0, - .vsub_attached = true, - }, - { - .msisdn = "5555", - .nr_of_sms = 2, - .failed_attempts = 5, - .vsub_attached = false, - }, -}; - -/* override, requires '-Wl,--wrap=db_sms_get_next_unsent_rr_msisdn' */ -struct gsm_sms *__real_db_sms_get_next_unsent_rr_msisdn(struct gsm_network *net, - const char *last_msisdn, - unsigned int max_failed); -struct gsm_sms *__wrap_db_sms_get_next_unsent_rr_msisdn(struct gsm_network *net, - const char *last_msisdn, - unsigned int max_failed) -{ - static struct vlr_subscr arbitrary_vsub = { .lu_complete = true }; - int i; - printf(" hitting database: looking for MSISDN > '%s', failed_attempts <= %d\n", - last_msisdn, max_failed); - - for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) { - if (!fake_sms_db[i].nr_of_sms) - continue; - if (strcmp(fake_sms_db[i].msisdn, last_msisdn) <= 0) - continue; - if (fake_sms_db[i].failed_attempts > max_failed) - continue; - osmo_strlcpy(fake_sms.dst.addr, fake_sms_db[i].msisdn, - sizeof(fake_sms.dst.addr)); - fake_sms.receiver = fake_sms_db[i].vsub_attached? &arbitrary_vsub : NULL; - osmo_strlcpy(fake_sms.text, fake_sms_db[i].msisdn, sizeof(fake_sms.text)); - if (fake_sms_db[i].vsub_attached) - fake_sms_db[i].nr_of_sms --; - return &fake_sms; - } - return NULL; -} - -void show_fake_sms_db() -{ - int i; - for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) { - printf(" %s%s has %u SMS pending, %u failed attempts\n", - fake_sms_db[i].msisdn, - fake_sms_db[i].vsub_attached ? "" : " (NOT attached)", - fake_sms_db[i].nr_of_sms, - fake_sms_db[i].failed_attempts); - } - printf("-->\n"); -} - -static void test_next_sms() -{ - int i; - char last_msisdn[GSM_EXTENSION_LENGTH+1] = ""; - - printf("Testing smsq_take_next_sms()\n"); - - printf("\n- vsub 2, 3 and 5 each have 2 SMS pending, but 5 is not attached\n"); - last_msisdn[0] = '\0'; - show_fake_sms_db(); - for (i = 0; i < 7; i++) { - struct gsm_sms *sms = smsq_take_next_sms(NULL, last_msisdn, sizeof(last_msisdn)); - _test_take_next_sms_print(i, sms, last_msisdn); - OSMO_ASSERT(i >= 4 || sms); - } - - printf("\n- SMS are pending at various nr failed attempts (cutoff at >= 10)\n"); - last_msisdn[0] = '\0'; - for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) { - fake_sms_db[i].vsub_attached = true; - fake_sms_db[i].nr_of_sms = 1 + i; - fake_sms_db[i].failed_attempts = i*5; - - } - show_fake_sms_db(); - for (i = 0; i < 7; i++) { - struct gsm_sms *sms = smsq_take_next_sms(NULL, last_msisdn, sizeof(last_msisdn)); - _test_take_next_sms_print(i, sms, last_msisdn); - OSMO_ASSERT(i >= 2 || sms); - } - - printf("\n- iterate the SMS DB at most once\n"); - osmo_strlcpy(last_msisdn, "2345", sizeof(last_msisdn)); - for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) { - fake_sms_db[i].vsub_attached = false; - fake_sms_db[i].nr_of_sms = 1; - fake_sms_db[i].failed_attempts = 0; - } - show_fake_sms_db(); - for (i = 0; i < 3; i++) { - struct gsm_sms *sms = smsq_take_next_sms(NULL, last_msisdn, sizeof(last_msisdn)); - _test_take_next_sms_print(i, sms, last_msisdn); - OSMO_ASSERT(!sms); - } - - printf("\n- there are no SMS in the DB\n"); - last_msisdn[0] = '\0'; - for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) { - fake_sms_db[i].vsub_attached = true; - fake_sms_db[i].nr_of_sms = 0; - fake_sms_db[i].failed_attempts = 0; - } - show_fake_sms_db(); - for (i = 0; i < 3; i++) { - struct gsm_sms *sms = smsq_take_next_sms(NULL, last_msisdn, sizeof(last_msisdn)); - _test_take_next_sms_print(i, sms, last_msisdn); - OSMO_ASSERT(!sms); - } -} - - -static struct log_info_cat sms_queue_test_categories[] = { -}; - -static struct log_info info = { - .cat = sms_queue_test_categories, - .num_cat = ARRAY_SIZE(sms_queue_test_categories), -}; - -int main(int argc, char **argv) -{ - talloc_ctx = talloc_named_const(NULL, 1, "sms_queue_test"); - msgb_talloc_ctx_init(talloc_ctx, 0); - osmo_init_logging(&info); - - OSMO_ASSERT(osmo_stderr_target); - log_set_use_color(osmo_stderr_target, 0); - log_set_print_timestamp(osmo_stderr_target, 0); - log_set_print_filename(osmo_stderr_target, 0); - log_set_print_category(osmo_stderr_target, 1); - log_parse_category_mask(osmo_stderr_target, "DLOAP,1"); - - test_next_sms(); - printf("Done\n"); - - return 0; -} diff --git a/tests/sms_queue/sms_queue_test.err b/tests/sms_queue/sms_queue_test.err deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/sms_queue/sms_queue_test.ok b/tests/sms_queue/sms_queue_test.ok deleted file mode 100644 index 146400d21..000000000 --- a/tests/sms_queue/sms_queue_test.ok +++ /dev/null @@ -1,98 +0,0 @@ -Testing smsq_take_next_sms() - -- vsub 2, 3 and 5 each have 2 SMS pending, but 5 is not attached - 1111 has 0 SMS pending, 0 failed attempts - 2222 has 2 SMS pending, 2 failed attempts - 3333 has 2 SMS pending, 3 failed attempts - 4444 has 0 SMS pending, 0 failed attempts - 5555 (NOT attached) has 2 SMS pending, 5 failed attempts ---> - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#0: sending SMS to 2222 (last_msisdn='2222') - hitting database: looking for MSISDN > '2222', failed_attempts <= 9 -#1: sending SMS to 3333 (last_msisdn='3333') - hitting database: looking for MSISDN > '3333', failed_attempts <= 9 - hitting database: looking for MSISDN > '5555', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#2: sending SMS to 2222 (last_msisdn='2222') - hitting database: looking for MSISDN > '2222', failed_attempts <= 9 -#3: sending SMS to 3333 (last_msisdn='3333') - hitting database: looking for MSISDN > '3333', failed_attempts <= 9 - hitting database: looking for MSISDN > '5555', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#4: no SMS to send (last_msisdn='5555') - hitting database: looking for MSISDN > '5555', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#5: no SMS to send (last_msisdn='5555') - hitting database: looking for MSISDN > '5555', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#6: no SMS to send (last_msisdn='5555') - -- SMS are pending at various nr failed attempts (cutoff at >= 10) - 1111 has 1 SMS pending, 0 failed attempts - 2222 has 2 SMS pending, 5 failed attempts - 3333 has 3 SMS pending, 10 failed attempts - 4444 has 4 SMS pending, 15 failed attempts - 5555 has 5 SMS pending, 20 failed attempts ---> - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#0: sending SMS to 1111 (last_msisdn='1111') - hitting database: looking for MSISDN > '1111', failed_attempts <= 9 -#1: sending SMS to 2222 (last_msisdn='2222') - hitting database: looking for MSISDN > '2222', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#2: sending SMS to 2222 (last_msisdn='2222') - hitting database: looking for MSISDN > '2222', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#3: no SMS to send (last_msisdn='') - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#4: no SMS to send (last_msisdn='') - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#5: no SMS to send (last_msisdn='') - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#6: no SMS to send (last_msisdn='') - -- iterate the SMS DB at most once - 1111 (NOT attached) has 1 SMS pending, 0 failed attempts - 2222 (NOT attached) has 1 SMS pending, 0 failed attempts - 3333 (NOT attached) has 1 SMS pending, 0 failed attempts - 4444 (NOT attached) has 1 SMS pending, 0 failed attempts - 5555 (NOT attached) has 1 SMS pending, 0 failed attempts ---> - hitting database: looking for MSISDN > '2345', failed_attempts <= 9 - hitting database: looking for MSISDN > '3333', failed_attempts <= 9 - hitting database: looking for MSISDN > '4444', failed_attempts <= 9 - hitting database: looking for MSISDN > '5555', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 - hitting database: looking for MSISDN > '1111', failed_attempts <= 9 - hitting database: looking for MSISDN > '2222', failed_attempts <= 9 -#0: no SMS to send (last_msisdn='3333') - hitting database: looking for MSISDN > '3333', failed_attempts <= 9 - hitting database: looking for MSISDN > '4444', failed_attempts <= 9 - hitting database: looking for MSISDN > '5555', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 - hitting database: looking for MSISDN > '1111', failed_attempts <= 9 - hitting database: looking for MSISDN > '2222', failed_attempts <= 9 -#1: no SMS to send (last_msisdn='3333') - hitting database: looking for MSISDN > '3333', failed_attempts <= 9 - hitting database: looking for MSISDN > '4444', failed_attempts <= 9 - hitting database: looking for MSISDN > '5555', failed_attempts <= 9 - hitting database: looking for MSISDN > '', failed_attempts <= 9 - hitting database: looking for MSISDN > '1111', failed_attempts <= 9 - hitting database: looking for MSISDN > '2222', failed_attempts <= 9 -#2: no SMS to send (last_msisdn='3333') - -- there are no SMS in the DB - 1111 has 0 SMS pending, 0 failed attempts - 2222 has 0 SMS pending, 0 failed attempts - 3333 has 0 SMS pending, 0 failed attempts - 4444 has 0 SMS pending, 0 failed attempts - 5555 has 0 SMS pending, 0 failed attempts ---> - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#0: no SMS to send (last_msisdn='') - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#1: no SMS to send (last_msisdn='') - hitting database: looking for MSISDN > '', failed_attempts <= 9 -#2: no SMS to send (last_msisdn='') -Done diff --git a/tests/subscr/Makefile.am b/tests/subscr/Makefile.am deleted file mode 100644 index 5b770bcb2..000000000 --- a/tests/subscr/Makefile.am +++ /dev/null @@ -1,43 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(LIBSMPP34_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(NULL) - -AM_LDFLAGS = \ - $(COVERAGE_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - bsc_subscr_test.ok \ - bsc_subscr_test.err \ - $(NULL) - -noinst_PROGRAMS = \ - bsc_subscr_test \ - $(NULL) - -bsc_subscr_test_SOURCES = \ - bsc_subscr_test.c \ - $(NULL) - -bsc_subscr_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBSMPP34_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(NULL) diff --git a/tests/subscr/bsc_subscr_test.c b/tests/subscr/bsc_subscr_test.c deleted file mode 100644 index 60d687d58..000000000 --- a/tests/subscr/bsc_subscr_test.c +++ /dev/null @@ -1,130 +0,0 @@ -/* (C) 2008 by Jan Luebbe - * (C) 2009 by Holger Hans Peter Freyther - * (C) 2014 by Alexander Chemeris - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include - -#include -#include - -#include -#include -#include -#include - -struct llist_head *bsc_subscribers; - -#define VERBOSE_ASSERT(val, expect_op, fmt) \ - do { \ - printf(#val " == " fmt "\n", (val)); \ - OSMO_ASSERT((val) expect_op); \ - } while (0); - -static void assert_bsc_subscr(const struct bsc_subscr *bsub, const char *imsi) -{ - struct bsc_subscr *sfound; - OSMO_ASSERT(bsub); - OSMO_ASSERT(strcmp(bsub->imsi, imsi) == 0); - - sfound = bsc_subscr_find_by_imsi(bsc_subscribers, imsi); - OSMO_ASSERT(sfound == bsub); - - bsc_subscr_put(sfound); -} - -static void test_bsc_subscr(void) -{ - struct bsc_subscr *s1, *s2, *s3; - const char *imsi1 = "1234567890"; - const char *imsi2 = "9876543210"; - const char *imsi3 = "5656565656"; - - printf("Test BSC subscriber allocation and deletion\n"); - - /* Check for emptiness */ - VERBOSE_ASSERT(llist_count(bsc_subscribers), == 0, "%d"); - OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi1) == NULL); - OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi2) == NULL); - OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi3) == NULL); - - /* Allocate entry 1 */ - s1 = bsc_subscr_find_or_create_by_imsi(bsc_subscribers, imsi1); - VERBOSE_ASSERT(llist_count(bsc_subscribers), == 1, "%d"); - assert_bsc_subscr(s1, imsi1); - VERBOSE_ASSERT(llist_count(bsc_subscribers), == 1, "%d"); - OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi2) == NULL); - - /* Allocate entry 2 */ - s2 = bsc_subscr_find_or_create_by_imsi(bsc_subscribers, imsi2); - VERBOSE_ASSERT(llist_count(bsc_subscribers), == 2, "%d"); - - /* Allocate entry 3 */ - s3 = bsc_subscr_find_or_create_by_imsi(bsc_subscribers, imsi3); - VERBOSE_ASSERT(llist_count(bsc_subscribers), == 3, "%d"); - - /* Check entries */ - assert_bsc_subscr(s1, imsi1); - assert_bsc_subscr(s2, imsi2); - assert_bsc_subscr(s3, imsi3); - - /* Free entry 1 */ - bsc_subscr_put(s1); - s1 = NULL; - VERBOSE_ASSERT(llist_count(bsc_subscribers), == 2, "%d"); - OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi1) == NULL); - - assert_bsc_subscr(s2, imsi2); - assert_bsc_subscr(s3, imsi3); - - /* Free entry 2 */ - bsc_subscr_put(s2); - s2 = NULL; - VERBOSE_ASSERT(llist_count(bsc_subscribers), == 1, "%d"); - OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi1) == NULL); - OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi2) == NULL); - assert_bsc_subscr(s3, imsi3); - - /* Free entry 3 */ - bsc_subscr_put(s3); - s3 = NULL; - VERBOSE_ASSERT(llist_count(bsc_subscribers), == 0, "%d"); - OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi3) == NULL); - - OSMO_ASSERT(llist_empty(bsc_subscribers)); -} - -int main() -{ - printf("Testing BSC subscriber core code.\n"); - osmo_init_logging(&log_info); - log_set_print_filename(osmo_stderr_target, 0); - log_set_print_timestamp(osmo_stderr_target, 0); - log_set_use_color(osmo_stderr_target, 0); - log_set_print_category(osmo_stderr_target, 1); - log_set_category_filter(osmo_stderr_target, DREF, 1, LOGL_DEBUG); - - bsc_subscribers = talloc_zero(NULL, struct llist_head); - INIT_LLIST_HEAD(bsc_subscribers); - - test_bsc_subscr(); - - printf("Done\n"); - return 0; -} diff --git a/tests/subscr/bsc_subscr_test.err b/tests/subscr/bsc_subscr_test.err deleted file mode 100644 index a66317a36..000000000 --- a/tests/subscr/bsc_subscr_test.err +++ /dev/null @@ -1,17 +0,0 @@ -DREF BSC subscr IMSI:1234567890 usage increases to: 2 -DREF BSC subscr IMSI:1234567890 usage decreases to: 1 -DREF BSC subscr IMSI:1234567890 usage increases to: 2 -DREF BSC subscr IMSI:1234567890 usage decreases to: 1 -DREF BSC subscr IMSI:9876543210 usage increases to: 2 -DREF BSC subscr IMSI:9876543210 usage decreases to: 1 -DREF BSC subscr IMSI:5656565656 usage increases to: 2 -DREF BSC subscr IMSI:5656565656 usage decreases to: 1 -DREF BSC subscr IMSI:1234567890 usage decreases to: 0 -DREF BSC subscr IMSI:9876543210 usage increases to: 2 -DREF BSC subscr IMSI:9876543210 usage decreases to: 1 -DREF BSC subscr IMSI:5656565656 usage increases to: 2 -DREF BSC subscr IMSI:5656565656 usage decreases to: 1 -DREF BSC subscr IMSI:9876543210 usage decreases to: 0 -DREF BSC subscr IMSI:5656565656 usage increases to: 2 -DREF BSC subscr IMSI:5656565656 usage decreases to: 1 -DREF BSC subscr IMSI:5656565656 usage decreases to: 0 diff --git a/tests/subscr/bsc_subscr_test.ok b/tests/subscr/bsc_subscr_test.ok deleted file mode 100644 index 0f6a8be01..000000000 --- a/tests/subscr/bsc_subscr_test.ok +++ /dev/null @@ -1,11 +0,0 @@ -Testing BSC subscriber core code. -Test BSC subscriber allocation and deletion -llist_count(bsc_subscribers) == 0 -llist_count(bsc_subscribers) == 1 -llist_count(bsc_subscribers) == 1 -llist_count(bsc_subscribers) == 2 -llist_count(bsc_subscribers) == 3 -llist_count(bsc_subscribers) == 2 -llist_count(bsc_subscribers) == 1 -llist_count(bsc_subscribers) == 0 -Done diff --git a/tests/trau/Makefile.am b/tests/trau/Makefile.am deleted file mode 100644 index 1d014ba3c..000000000 --- a/tests/trau/Makefile.am +++ /dev/null @@ -1,45 +0,0 @@ -AM_CPPFLAGS = \ - $(all_includes) \ - -I$(top_srcdir)/include \ - $(NULL) - -AM_CFLAGS = \ - -Wall \ - -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(LIBSMPP34_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(NULL) - -AM_LDFLAGS = \ - $(COVERAGE_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - trau_test.ok \ - $(NULL) - -noinst_PROGRAMS = \ - trau_test \ - $(NULL) - -trau_test_SOURCES = \ - trau_test.c \ - $(NULL) - -trau_test_LDADD = \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libcommon-cs/libcommon-cs.a \ - $(top_builddir)/src/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBSMPP34_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBRARY_DL) \ - -ldbi \ - $(NULL) - diff --git a/tests/trau/trau_test.c b/tests/trau/trau_test.c deleted file mode 100644 index c74e6dbb3..000000000 --- a/tests/trau/trau_test.c +++ /dev/null @@ -1,84 +0,0 @@ -/* (C) 2013 by Andreas Eversberg - * All Rights Reserved - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - -#include -#include -#include - -#include -#include -#include - -void test_trau_fr_efr(unsigned char *data) -{ - struct decoded_trau_frame tf; - struct msgb *msg; - struct gsm_data_frame *frame; - - printf("Testing TRAU FR transcoding.\n"); - data[0] = 0xd0; - trau_encode_fr(&tf, data); - tf.c_bits[11] = 0; /* clear BFI */ - msg = trau_decode_fr(1, &tf); - OSMO_ASSERT(msg != NULL); - frame = (struct gsm_data_frame *)msg->data; - OSMO_ASSERT(frame->msg_type == GSM_TCHF_FRAME); - OSMO_ASSERT(!memcmp(frame->data, data, 33)); - msgb_free(msg); - - printf("Testing TRAU EFR transcoding.\n"); - data[0] = 0xc0; - trau_encode_efr(&tf, data); - OSMO_ASSERT(tf.d_bits[0] == 1); /* spare bit must be 1 */ - tf.c_bits[11] = 0; /* clear BFI */ - msg = trau_decode_efr(1, &tf); - OSMO_ASSERT(msg != NULL); - frame = (struct gsm_data_frame *)msg->data; - OSMO_ASSERT(frame->msg_type == GSM_TCHF_FRAME_EFR); - OSMO_ASSERT(!memcmp(frame->data, data, 31)); - - printf("Testing TRAU EFR decoding with CRC error.\n"); - tf.d_bits[0] = 0; /* spare bit must be included */ - msg = trau_decode_efr(1, &tf); - OSMO_ASSERT(msg != NULL); - frame = (struct gsm_data_frame *)msg->data; - OSMO_ASSERT(frame->msg_type == GSM_BAD_FRAME); - msgb_free(msg); -} - -int main() -{ - unsigned char data[33]; - int i; - - msgb_talloc_ctx_init(NULL, 0); - - memset(data, 0x00, sizeof(data)); - test_trau_fr_efr(data); - memset(data, 0xff, sizeof(data)); - test_trau_fr_efr(data); - srandom(42); - for (i = 0; i < sizeof(data); i++) - data[i] = random(); - test_trau_fr_efr(data); - printf("Done\n"); - return 0; -} - -/* stubs */ -void vty_out() {} diff --git a/tests/trau/trau_test.ok b/tests/trau/trau_test.ok deleted file mode 100644 index ef7123073..000000000 --- a/tests/trau/trau_test.ok +++ /dev/null @@ -1,10 +0,0 @@ -Testing TRAU FR transcoding. -Testing TRAU EFR transcoding. -Testing TRAU EFR decoding with CRC error. -Testing TRAU FR transcoding. -Testing TRAU EFR transcoding. -Testing TRAU EFR decoding with CRC error. -Testing TRAU FR transcoding. -Testing TRAU EFR transcoding. -Testing TRAU EFR decoding with CRC error. -Done diff --git a/tests/vlr/Makefile.am b/tests/vlr/Makefile.am deleted file mode 100644 index 2208a6f59..000000000 --- a/tests/vlr/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -AM_CFLAGS = -Wall -ggdb3 \ - $(LIBOSMOCORE_CFLAGS) \ - $(LIBOSMOGSM_CFLAGS) \ - $(COVERAGE_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(NULL) -AM_LDFLAGS = $(COVERAGE_LDFLAGS) - -noinst_PROGRAMS = vlr_test - -vlr_test_SOURCES = vlr_test.c -vlr_test_LDADD = \ - $(top_builddir)/src/libvlr/libvlr.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBRARY_DL) \ - $(LIBCRYPTO_LIBS) \ - $(NULL) diff --git a/tests/vlr/vlr_test.c b/tests/vlr/vlr_test.c deleted file mode 100644 index 19beb69c4..000000000 --- a/tests/vlr/vlr_test.c +++ /dev/null @@ -1,694 +0,0 @@ -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#define S(x) (1 << (x)) - -/* - * TODO: - * * test FSM for all testvlr_mode (and more) - * * test also the time-outs in the vlr code - * * test for memory leaks - * * how to get the HLR running? Or test against stub? - * * test disappearing MS connection - * * test absence of HLR - */ - -void *tall_bsc_ctx; -static struct vlr_instance *g_vlr; - -/*********************************************************************** - * Finite State Machine simulating MS and MSC towards VLR - ***********************************************************************/ - -static int timer_error_cb(struct osmo_fsm_inst *fi) -{ - LOGPFSM(fi, "timer expired waiting for completion\n"); - osmo_fsm_inst_term(fi, OSMO_FSM_TERM_ERROR, NULL); - return 1; -} - -enum testvlr_mode { - MODE_SUCCESS, - MODE_SUCCESS_TMSI, - MODE_AUTH_FAIL, - MODE_AUTH_RESYNC, -}; - -struct testvlr_priv { - enum testvlr_mode mode; - uint32_t tmsi; - char imsi[16]; - char imei[16]; - struct osmo_location_area_id old_lai; - struct osmo_location_area_id new_lai; - - struct vlr_subscr *subscr; - - struct osmo_fsm_inst *lu_fsm; -}; - -#define fsi_priv(x) (struct testvlr_priv *)(x)->priv - -enum f_state { - /*! initial state */ - ST_NULL, - /*! LU was sent by MS */ - ST_LU_SENT, - /*! waiting for auth re-sync */ - ST_RESYNC_SENT, - /* Waiting for LU ACK */ - ST_WAIT_LU_ACK, - ST_DONE, - ST_FAILED, -}; - -enum f_event { - /* events from MS */ - EVT_MS_TX_LU, /* transmit LU REQ to network */ - EVT_MS_TX_ID_RESP, /* tranmit ID RSP to network */ - EVT_MS_TX_AUTH_RESP, /* transmit AUTH RESP to network */ - EVT_MS_TX_AUTH_FAIL, /* transmit AUTH FAIL to network */ - EVT_MS_CONN_LOST, /* connection to MS was lost */ - - /* events from VLR */ - EVT_VLR_AUTH_REQ, /* transmit AUTH REQ to MS */ - EVT_VLR_ID_REQ_IMSI, /* transmit ID REQ(IMSI) to MS */ - EVT_VLR_ID_REQ_IMEI, /* tramsmit ID REQ(IMEI) to MS */ - EVT_VLR_ID_REQ_IMEISV, /* trasnmit ID REQ(IMEISV) to MS */ - EVT_VLR_AUTH_REJ, /* transmit AUTH REJ to MS */ - EVT_VLR_SET_CIPH, /* transmit SET CIPH to MS */ - EVT_VLR_LU_ACK, /* transmit LU ACK to MS */ - EVT_VLR_LU_REJ, /* transmit LU REJ to MS */ -}; - -static struct value_string f_event_names[] = { - { EVT_MS_TX_LU, "MS-TX-LU" }, - { EVT_MS_TX_ID_RESP, "MS-TX-ID-RESP" }, - { EVT_MS_TX_AUTH_RESP, "MS-TX-AUTH-RESP" }, - { EVT_MS_TX_AUTH_FAIL, "MS-TX-AUTH-FAIL" }, - { EVT_MS_CONN_LOST, "MS-CONN-LOST" }, - - { EVT_VLR_AUTH_REQ, "VLR-AUTH-REQ" }, - { EVT_VLR_ID_REQ_IMSI, "VLR-ID-REQ-IMSI" }, - { EVT_VLR_ID_REQ_IMEI, "VLR-ID-REQ-IMEI" }, - { EVT_VLR_ID_REQ_IMEISV,"VLR-ID-REQ-IMEISV" }, - { EVT_VLR_AUTH_REJ, "VLR-AUTH-REJ" }, - { EVT_VLR_SET_CIPH, "VLR-SET-CIPH" }, - { EVT_VLR_LU_ACK, "VLR-LU-ACK" }, - { EVT_VLR_LU_REJ, "VLR-LU-REJ" }, - { 0, NULL } -}; - -static void fsm_f_allstate(struct osmo_fsm_inst *fi, uint32_t event, - void *data) -{ - struct testvlr_priv *priv = fsi_priv(fi); - uint8_t mi[16]; - unsigned int mi_len; - - switch (event) { - case EVT_VLR_ID_REQ_IMSI: - if (priv->mode != MODE_SUCCESS_TMSI) { - LOGP(DGPRS, LOGL_NOTICE, "Unexpected ID REQ " - "(IMSI)\n"); - } - mi_len = gsm48_generate_mid_from_imsi(mi, priv->imsi); - vlr_subscr_rx_id_resp(priv->subscr, mi+2, mi_len-2); - break; - case EVT_VLR_ID_REQ_IMEI: - mi_len = gsm48_generate_mid_from_imsi(mi, priv->imei); - mi[0] = (mi[0] & 0xf8) | GSM_MI_TYPE_IMEI; - vlr_subscr_rx_id_resp(priv->subscr+2, mi, mi_len-2); - break; - case EVT_VLR_ID_REQ_IMEISV: - mi_len = gsm48_generate_mid_from_imsi(mi, priv->imei); - mi[0] = (mi[0] & 0xf8) | GSM_MI_TYPE_IMEISV; - vlr_subscr_rx_id_resp(priv->subscr, mi+2, mi_len-2); - break; - case EVT_MS_CONN_LOST: - vlr_subscr_disconnected(priv->subscr); - /* IDEA: not release but keep around in extra state to - * see if VLR still sends us anything? */ - osmo_fsm_inst_free(fi); - break; - } -} - -static void fsm_f_null(struct osmo_fsm_inst *fi, uint32_t event, void *data) -{ - struct testvlr_priv *priv = fsi_priv(fi); - uint32_t tmsi = 0; - const char *imsi = NULL; - - switch (event) { - case EVT_MS_TX_LU: - /* send LU to VLR */ - if (priv->mode == MODE_SUCCESS) - imsi = priv->imsi; - else - tmsi = priv->tmsi; - priv->lu_fsm = vlr_loc_update(fi, - EVT_VLR_LU_ACK, - EVT_VLR_LU_REJ, - NULL, - g_vlr, NULL, - VLR_LU_TYPE_IMSI_ATTACH, tmsi, - imsi, &priv->old_lai, - &priv->new_lai, - true, - true, - false, - false, - true); - OSMO_ASSERT(priv->subscr); - osmo_fsm_inst_state_chg(fi, ST_LU_SENT, 0, 0); - break; - default: - break; - } -} - -static void fsm_f_lu_sent(struct osmo_fsm_inst *fi, uint32_t event, - void *data) -{ - struct gsm_auth_tuple *at = NULL; - struct testvlr_priv *priv = fsi_priv(fi); - uint8_t res_fail[4]; - uint8_t auts[14]; - - switch (event) { - case EVT_VLR_AUTH_REQ: - at = data; - OSMO_ASSERT(at); - DEBUGP(DGPRS, "%s: at->res=%s\n", __func__, osmo_hexdump(at->vec.res, at->vec.res_len)); - switch (priv->mode) { - case MODE_SUCCESS: - case MODE_SUCCESS_TMSI: - /* return matching SRES/AUTS */ - vlr_subscr_rx_auth_resp(priv->subscr, true, false, - at->vec.res, at->vec.res_len); - break; - case MODE_AUTH_FAIL: - /* return not matching SRES/AUTS */ - vlr_subscr_rx_auth_resp(priv->subscr, true, false, - res_fail, sizeof(res_fail)); - /* FIXME: state transition? */ - break; - case MODE_AUTH_RESYNC: - /* return SRES/AUTS requesting re-sync */ - /* FIXME: generate a proper authenticating - * re-sync request */ - vlr_subscr_rx_auth_fail(priv->subscr, auts); - /* FIXME: state transition? */ - osmo_fsm_inst_state_chg(fi, ST_RESYNC_SENT, 0, 0); - break; - } - osmo_fsm_inst_state_chg(fi, ST_WAIT_LU_ACK, 0, 0); - break; - case EVT_VLR_LU_REJ: - { - uint8_t cause = *(uint8_t *)data; - LOGP(DGPRS, LOGL_NOTICE, "LU(%s): Rejected; cause=0x%02x\n", - priv->imsi, cause); - - } - break; - default: - break; - } -} - -#if 0 -static void fsm_f_resync_sent(struct osmo_fsm_inst *fi, uint32_t event, - void *data) -{ - struct testvlr_priv *priv = fsi_priv(fi); - struct gsm_auth_tuple *at = NULL; - - /* second auth request is supposed to succed after the - * re-sync procedure before */ - switch (event) { - case EVT_VLR_AUTH_REQ: - at = data; - /* return matching SRES/AUTS now */ - vlr_subscr_rx_auth_resp(priv->subscr, true, false, - at->vec.res, at->vec.res_len); - osmo_fsm_inst_state_chg(fi, ST_WAIT_LU_ACK, 0, 0); - break; - } -} -#endif - -static void fsm_f_wait_lu_ack(struct osmo_fsm_inst *fi, uint32_t event, - void *data) -{ - struct testvlr_priv *priv = fsi_priv(fi); - - switch (event) { - case EVT_VLR_LU_ACK: - if (priv->subscr->tmsi != GSM_RESERVED_TMSI) { - /* we need to send an TMSI REALLOC COMPL */ - vlr_subscr_rx_tmsi_reall_compl(priv->subscr); - } - osmo_fsm_inst_state_chg(fi, ST_DONE, 0, 0); - break; - case EVT_VLR_LU_REJ: - osmo_fsm_inst_state_chg(fi, ST_FAILED, 0, 0); - break; - } -} - -static void fsm_f_imsi_sent(struct osmo_fsm_inst *fi, uint32_t event, - void *data) -{ - switch (event) { - case EVT_MS_TX_ID_RESP: - break; - } -} - -#if 0 -static void fsm_f_areq_sent(struct osmo_fsm_inst *fi, uint32_t event, - void *data) -{ - switch (event) { - case EVT_MS_TX_AUTH_RESP: - break; - case EVT_MS_TX_AUTH_FAIL: - break; - } -} -#endif - -static struct osmo_fsm_state fsm_success_states[] = { - [ST_NULL] = { - .in_event_mask = S(EVT_MS_TX_LU), - .out_state_mask = S(ST_LU_SENT), - .name = "NULL", - .action = fsm_f_null, - }, - [ST_LU_SENT] = { - .in_event_mask = S(EVT_VLR_AUTH_REQ) | - S(EVT_VLR_LU_REJ), - //.out_state_mask = S(ST_IDREQ_IMSI_SENT) | S(ST_AUTH_REQ_SENT), - .out_state_mask = S(ST_WAIT_LU_ACK), - .name = "LU Sent", - .action = fsm_f_lu_sent, - }, - [ST_RESYNC_SENT] = { - .in_event_mask = S(EVT_VLR_AUTH_REQ), - .out_state_mask = S(ST_WAIT_LU_ACK), - .name = "AUTH-RESYNC sent", - .action = fsm_f_imsi_sent, - }, - [ST_WAIT_LU_ACK] = { - .in_event_mask = S(EVT_VLR_LU_ACK) | - S(EVT_VLR_SET_CIPH) | - S(EVT_VLR_LU_REJ), - .out_state_mask = S(ST_DONE), - .name = "WAIT-LU-ACK", - .action = fsm_f_wait_lu_ack, - }, - [ST_DONE] = { - .name = "DONE" - }, -}; - -static struct osmo_fsm vlr_test_fsm = { - .name = "VLR Test FSM", - .states = fsm_success_states, - .num_states = ARRAY_SIZE(fsm_success_states), - .log_subsys = DGPRS, - .event_names = f_event_names, - .allstate_event_mask = S(EVT_MS_CONN_LOST) | - S(EVT_VLR_ID_REQ_IMSI) | - S(EVT_VLR_ID_REQ_IMEI) | - S(EVT_VLR_ID_REQ_IMEISV), - .allstate_action = fsm_f_allstate, -}; - -/* Testing of Subscriber_Present_VLR */ - -enum test_sub_pres_state { - TSPV_S_INIT, - TSPV_S_RUNNING, -}; - -enum test_sub_pres_evt { - TSPV_E_START, - TSPV_E_COMPL, -}; - -static void tspv_f_running(struct osmo_fsm_inst *fi, uint32_t event, void *data) -{ - struct vlr_subscr *vsub = fi->priv; - - switch (event) { - case TSPV_E_COMPL: - OSMO_ASSERT(vsub); - OSMO_ASSERT(vsub->ms_not_reachable_flag == false); - osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL); - break; - } -} - -static void tspv_f_init(struct osmo_fsm_inst *fi, uint32_t event, void *data) -{ - struct osmo_fsm_inst *spv; - struct vlr_subscr *vsub = fi->priv; - - switch (event) { - case TSPV_E_START: - OSMO_ASSERT(vsub); - vsub->ms_not_reachable_flag = true; - spv = sub_pres_vlr_fsm_start(fi, vsub, TSPV_E_COMPL); - OSMO_ASSERT(spv); - osmo_fsm_inst_state_chg(fi, TSPV_S_RUNNING, 4, 0); - break; - } -} - -static const struct osmo_fsm_state test_sub_pres_vlr_states[] = { - [TSPV_S_INIT] = { - .in_event_mask = S(TSPV_E_START), - .out_state_mask = S(TSPV_S_RUNNING), - .name = "INIT", - .action = tspv_f_init, - }, - [TSPV_S_RUNNING] = { - .in_event_mask = S(TSPV_E_COMPL), - .out_state_mask = 0, - .name = "RUNNING", - .action = tspv_f_running, - }, -}; - -static struct osmo_fsm test_sub_pres_vlr_fsm = { - .name = "Test Subscriber_Present_VLR", - .states = test_sub_pres_vlr_states, - .num_states = ARRAY_SIZE(test_sub_pres_vlr_states), - .log_subsys = DGPRS, - .event_names = f_event_names, - .timer_cb = timer_error_cb, -}; - -#if 0 -static void start_sub_pres_vlr(void *ctx, uint32_t tmsi, const char *imsi) -{ - struct osmo_fsm_inst *fi; - struct vlr_subscr *vsub = vlr_subscr_alloc(g_vlr); - - vsub->tmsi = tmsi; - strncpy(vsub->imsi, imsi, sizeof(vsub->imsi)); - fi = osmo_fsm_inst_alloc(&test_sub_pres_vlr_fsm, ctx, vsub, LOGL_DEBUG, vsub->imsi); - osmo_fsm_inst_dispatch(fi, TSPV_E_START, NULL); -} -#endif - -/* Testing of Update_HLR_VLR */ - -enum test_update_hlr_vlr_state { - TUHV_S_INIT, - TUHV_S_RUNNING, -}; - -enum test_update_hlr_vlr_event { - TUHV_E_START, - TUHV_E_COMPL, -}; - -static void tuhv_f_running(struct osmo_fsm_inst *fi, uint32_t event, void *data) -{ - enum gsm48_gmm_cause *res = data; - - switch (event) { - case TUHV_E_COMPL: - if (!res) { - /* Success */ - LOGPFSM(fi, "success\n"); - } else { - /* error */ - LOGPFSM(fi, "errror cause=0x%u\n", *res); - } - osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL); - break; - } -} - -static void tuhv_f_init(struct osmo_fsm_inst *fi, uint32_t event, void *data) -{ - struct osmo_fsm_inst *child; - struct vlr_subscr *vsub = fi->priv; - - switch (event) { - case TUHV_E_START: - child = upd_hlr_vlr_proc_start(fi, vsub, TUHV_E_COMPL); - OSMO_ASSERT(child); - osmo_fsm_inst_state_chg(fi, TUHV_S_RUNNING, 4, 0); - break; - } -} - -static const struct osmo_fsm_state test_upd_hlr_vlr_states[] = { - [TUHV_S_INIT] = { - .in_event_mask = S(TUHV_E_START), - .out_state_mask = S(TUHV_S_RUNNING), - .name = "INIT", - .action = tuhv_f_init, - }, - [TUHV_S_RUNNING] = { - .in_event_mask = S(TUHV_E_COMPL), - .out_state_mask = 0, - .name = "RUNNING", - .action = tuhv_f_running, - }, -}; - -static struct osmo_fsm test_upd_hlr_vlr_fsm = { - .name = "Test Update_HLR_VLR", - .states = test_upd_hlr_vlr_states, - .num_states = ARRAY_SIZE(test_upd_hlr_vlr_states), - .log_subsys = DGPRS, - .event_names = f_event_names, - .timer_cb = timer_error_cb, -}; - -#if 0 -static void start_upd_hlr_vlr(void *ctx, uint32_t tmsi, const char *imsi) -{ - struct osmo_fsm_inst *fi; - struct vlr_subscr *vsub = vlr_subscr_alloc(g_vlr); - - vsub->tmsi = tmsi; - strncpy(vsub->imsi, imsi, sizeof(vsub->imsi)); - - - fi = osmo_fsm_inst_alloc(&test_upd_hlr_vlr_fsm, ctx, vsub, LOGL_DEBUG, - vsub->imsi); - /* we need to set this to fool vlr.c in an ongoing LU */ - vsub->lu_fsm = fi; - osmo_fsm_inst_dispatch(fi, TUHV_E_START, NULL); -} -#endif - -/*********************************************************************** - * Integration with VLR code - ***********************************************************************/ - -static struct vlr_instance *g_vlr; - -/* VLR asks us to send an authentication request */ -static int msc_vlr_tx_auth_req(void *msc_conn_ref, struct gsm_auth_tuple *at, - bool send_autn) -{ - struct osmo_fsm_inst *fi = msc_conn_ref; - OSMO_ASSERT(at); - DEBUGP(DGPRS, "%s: RES=%s\n", __func__, - osmo_hexdump_nospc(at->vec.res, at->vec.res_len)); - osmo_fsm_inst_dispatch(fi, EVT_VLR_AUTH_REQ, at); - return 0; -} - -/* VLR asks us to send an authentication reject */ -static int msc_vlr_tx_auth_rej(void *msc_conn_ref) -{ - struct osmo_fsm_inst *fi = msc_conn_ref; - DEBUGP(DGPRS, "%s\n", __func__); - osmo_fsm_inst_dispatch(fi, EVT_VLR_AUTH_REJ, NULL); - return 0; -} - -/* VLR asks us to transmit an Identity Request of given type */ -static int msc_vlr_tx_id_req(void *msc_conn_ref, uint8_t mi_type) -{ - struct osmo_fsm_inst *fi = msc_conn_ref; - uint32_t event; - - DEBUGP(DGPRS, "%s (%u)\n", __func__, mi_type); - - switch (mi_type) { - case GSM_MI_TYPE_IMSI: - event = EVT_VLR_ID_REQ_IMSI; - break; - case GSM_MI_TYPE_IMEI: - event = EVT_VLR_ID_REQ_IMEI; - break; - case GSM_MI_TYPE_IMEISV: - event = EVT_VLR_ID_REQ_IMEISV; - break; - default: - LOGP(DGPRS, LOGL_ERROR, "Unknown identity 0x%02x\n", - mi_type); - return -1; - } - osmo_fsm_inst_dispatch(fi, event, NULL); - return 0; -} - -/* VLR asks us to transmit a Location Update Accept */ -static int msc_vlr_tx_lu_ack(void *msc_conn_ref, uint32_t send_tmsi) -{ - struct osmo_fsm_inst *fi = msc_conn_ref; - DEBUGP(DGPRS, "%s\n", __func__); - osmo_fsm_inst_dispatch(fi, EVT_VLR_LU_ACK, NULL); - return 0; -} - -/* VLR asks us to transmit a Location Update Reject */ -static int msc_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause) -{ - struct osmo_fsm_inst *fi = msc_conn_ref; - DEBUGP(DGPRS, "%s\n", __func__); - osmo_fsm_inst_dispatch(fi, EVT_VLR_LU_REJ, (void *) &cause); - return 0; -} - -static int msc_vlr_set_ciph_mode(void *msc_conn_ref, enum vlr_ciph mode, - bool retrieve_imeisv) -{ - struct osmo_fsm_inst *fi = msc_conn_ref; - DEBUGP(DGPRS, "%s\n", __func__); - osmo_fsm_inst_dispatch(fi, EVT_VLR_SET_CIPH, NULL); - return 0; -} - -/* VLR informs us that the subscriber data has somehow been modified */ -static void msc_vlr_subscr_update(struct vlr_subscr *subscr) -{ - DEBUGP(DGPRS, "%s\n", __func__); - /* FIXME */ -} - -static void msc_vlr_subscr_assoc(void *msc_conn_ref, struct vlr_subscr *vsub) -{ - struct osmo_fsm_inst *fi = msc_conn_ref; - struct testvlr_priv *priv = fsi_priv(fi); - DEBUGP(DGPRS, "%s(%p, %s)\n", __func__, msc_conn_ref, vlr_subscr_name(vsub)); - priv->subscr = vsub; -} - -/* operations that we need to implement for libvlr */ -static const struct vlr_ops test_vlr_ops = { - .tx_auth_req = msc_vlr_tx_auth_req, - .tx_auth_rej = msc_vlr_tx_auth_rej, - .tx_id_req = msc_vlr_tx_id_req, - .tx_lu_acc = msc_vlr_tx_lu_ack, - .tx_lu_rej = msc_vlr_tx_lu_rej, - .set_ciph_mode = msc_vlr_set_ciph_mode, - .subscr_update = msc_vlr_subscr_update, - .subscr_assoc = msc_vlr_subscr_assoc, -}; - -/*********************************************************************** - * Actual test cases - ***********************************************************************/ - - -static struct osmo_fsm_inst * -start_lu(enum testvlr_mode mode, uint32_t tmsi, - const char *imsi, const char *imei) -{ - struct testvlr_priv *vp; - struct osmo_fsm_inst *fi; - - vp = talloc_zero(tall_bsc_ctx, struct testvlr_priv); - vp->mode = mode; - vp->tmsi = tmsi; - strncpy(vp->imsi, imsi, sizeof(vp->imsi)); - strncpy(vp->imei, imei, sizeof(vp->imei)); - - fi = osmo_fsm_inst_alloc(&vlr_test_fsm, vp, vp, LOGL_DEBUG, vp->imsi); - osmo_fsm_inst_dispatch(fi, EVT_MS_TX_LU, NULL); - return fi; -} - -/*********************************************************************** - * Main / Misc - ***********************************************************************/ - -static struct osmo_timer_list tmr; - -static void timer_cb(void *data) -{ - uint32_t tmsi = rand() % 1000000; - uint64_t imsi = 901790000000000 + tmsi; - char imsi_str[32]; - - snprintf(imsi_str, sizeof(imsi_str), "%lu", imsi); - //start_lu(MODE_AUTH_FAIL, tmsi, imsi_str, "23422342"); - start_lu(MODE_SUCCESS_TMSI, tmsi, imsi_str, "23422342"); - //start_lu(MODE_SUCCESS, tmsi, imsi_str, "23422342"); - //start_upd_hlr_vlr(tall_bsc_ctx, tmsi, imsi_str); - //start_sub_pres_vlr(tall_bsc_ctx); - osmo_timer_schedule(&tmr, 8, 0); -} - -static void sighdlr(int sig) -{ - switch (sig) { - case SIGUSR1: - talloc_report_full(tall_bsc_ctx, stderr); - break; - } -} - -int main(int argc, char **argv) -{ - tall_bsc_ctx = talloc_named_const(NULL, 1, "tall_bsc_ctx"); - - signal(SIGUSR1, sighdlr); - - osmo_init_logging(&log_info); - - g_vlr = vlr_alloc(NULL, &test_vlr_ops); - vlr_start("VLRTEST", g_vlr, "localhost", 2222); - OSMO_ASSERT(g_vlr); - osmo_fsm_register(&vlr_test_fsm); - osmo_fsm_register(&test_sub_pres_vlr_fsm); - osmo_fsm_register(&test_upd_hlr_vlr_fsm); - - g_vlr->cfg.assign_tmsi = true; - - tmr.cb = timer_cb; - timer_cb(NULL); - - while (1) { - osmo_select_main(0); - } - - exit(0); -} - -struct gsm_subscriber_connection; -int gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn) { return 0; } -- cgit v1.2.3