diff options
author | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2017-07-13 02:03:50 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2017-08-30 14:14:58 +0200 |
commit | ee6cfdc0d9710e3a69c8e1939eb21c8f2b759885 (patch) | |
tree | ed5aeb0979a1838778649078847a1ed6caa6b1a4 /tests | |
parent | 6c809185ee86d318d10205756bb6d91914d11fdf (diff) |
split off osmo-sgsn: remove files, apply build1.1.0
Change-Id: I5d27ff93e56cd13e0e70edd15e2080201e35e91f
Diffstat (limited to 'tests')
87 files changed, 7 insertions, 23181 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 7e17ad8de..10bb916ff 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,32 +1,8 @@ SUBDIRS = \ - gsm0408 \ - channel \ gprs \ - abis \ gbproxy \ - trau \ - subscr \ - nanobts_omlattr \ - sms_queue \ - msc_vlr \ $(NULL) -if BUILD_NAT -SUBDIRS += \ - bsc-nat \ - bsc-nat-trie \ - $(NULL) -endif -if BUILD_BSC -SUBDIRS += \ - bsc \ - $(NULL) -endif -if BUILD_SMPP -SUBDIRS += \ - smpp \ - $(NULL) -endif if HAVE_LIBGTP SUBDIRS += \ gtphub \ @@ -68,7 +44,6 @@ EXTRA_DIST = \ $(TESTSUITE) \ vty_test_runner.py \ ctrl_test_runner.py \ - smpp_test_runner.py \ $(NULL) TESTSUITE = $(srcdir)/testsuite @@ -83,9 +58,6 @@ python-tests: $(BUILT_SOURCES) osmotestconfig.py -p $(abs_top_srcdir) -w $(abs_top_builddir) -v $(PYTHON) $(srcdir)/vty_test_runner.py -w $(abs_top_builddir) -v $(PYTHON) $(srcdir)/ctrl_test_runner.py -w $(abs_top_builddir) -v -if BUILD_SMPP - $(PYTHON) $(srcdir)/smpp_test_runner.py -w $(abs_top_builddir) -v -endif rm -f $(top_builddir)/sms.db $(top_builddir)/gsn_restart $(top_builddir)/gtphub_restart_count else python-tests: $(BUILT_SOURCES) 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 <zecke@selfish.org> - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#include <stdio.h> -#include <stdlib.h> - -#include <osmocom/core/application.h> -#include <osmocom/core/utils.h> -#include <osmocom/gsm/protocol/gsm_12_21.h> - -#include <openbsc/gsm_data.h> -#include <openbsc/abis_nm.h> -#include <openbsc/debug.h> - -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 6663897bf..000000000 --- a/tests/bsc-nat-trie/Makefile.am +++ /dev/null @@ -1,21 +0,0 @@ -AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include -AM_CFLAGS=-Wall -ggdb3 $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBOSMOSCCP_CFLAGS) $(LIBOSMOABIS_CFLAGS) $(COVERAGE_CFLAGS) \ - $(LIBOSMOLEGACYMGCP_CFLAGS) \ - $(NULL) -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/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS) -lrt \ - $(LIBOSMOSCCP_LIBS) $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOLEGACYMGCP_LIBS) \ - $(LIBRARY_GSM) \ - $(NULL) 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 <zecke@selfish.org> - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#include <openbsc/nat_rewrite_trie.h> -#include <openbsc/debug.h> - -#include <osmocom/core/application.h> -#include <osmocom/core/backtrace.h> -#include <osmocom/core/talloc.h> -#include <osmocom/core/utils.h> - -#include <string.h> - -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 74838a984..000000000 --- a/tests/bsc-nat/Makefile.am +++ /dev/null @@ -1,61 +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) \ - $(LIBOSMOLEGACYMGCP_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/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOSCCP_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMONETIF_LIBS) \ - $(LIBOSMOCTRL_LIBS) \ - $(LIBOSMOLEGACYMGCP_LIBS) \ - $(LIBRARY_GSM) \ - -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 <zecke@selfish.org> - * (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 <http://www.gnu.org/licenses/>. - * - */ - - -#include <openbsc/debug.h> -#include <openbsc/gsm_data.h> -#include <openbsc/bsc_nat.h> -#include <openbsc/bsc_nat_sccp.h> -#include <openbsc/bsc_msg_filter.h> -#include <openbsc/nat_rewrite_trie.h> - -#include <osmocom/core/application.h> -#include <osmocom/core/backtrace.h> -#include <osmocom/core/talloc.h> - -#include <osmocom/sccp/sccp.h> -#include <osmocom/gsm/protocol/gsm_08_08.h> - -#include <stdio.h> - -/* 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 90bbb4ac7..000000000 --- a/tests/bsc/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) \ - $(LIBOSMOSCCP_CFLAGS) \ - $(LIBOSMOABIS_CFLAGS) \ - $(LIBOSMOLEGACYMGCP_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/libtrau/libtrau.a \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBOSMOSCCP_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOLEGACYMGCP_LIBS) \ - $(LIBRARY_GSM) \ - -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 <jerlbeck@sysmocom.de> - * (C) 2010-2013 by Holger Hans Peter Freyther <zecke@selfish.org> - * (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 <http://www.gnu.org/licenses/>. - * - */ - - -#include <openbsc/debug.h> -#include <openbsc/gsm_data.h> - -#include <openbsc/osmo_bsc.h> -#include <openbsc/bsc_msc_data.h> -#include <openbsc/gsm_04_80.h> -#include <openbsc/gsm_subscriber.h> - -#include <osmocom/core/application.h> -#include <osmocom/core/backtrace.h> -#include <osmocom/core/talloc.h> - -#include <stdio.h> -#include <search.h> - -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 beae658e9..000000000 --- a/tests/channel/channel_test.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org> - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#include <stdio.h> -#include <stdlib.h> - -#include <assert.h> - -#include <osmocom/core/application.h> -#include <osmocom/core/select.h> - -#include <openbsc/common_bsc.h> -#include <openbsc/abis_rsl.h> -#include <openbsc/debug.h> -#include <openbsc/gsm_subscriber.h> -#include <openbsc/vlr.h> - -void test_bts_debug_print(void) -{ - struct gsm_network *network; - struct gsm_bts *bts; - struct gsm_bts_trx *trx; - - printf("Testing the lchan printing:"); - - /* Create a dummy network */ - network = bsc_network_init(tall_bsc_ctx, 1, 1, NULL); - if (!network) - exit(1); - /* Add a BTS with some reasonanbly non-zero id */ - bts = gsm_bts_alloc(network, 45); - /* Add a second TRX to test on multiple TRXs */ - gsm_bts_trx_alloc(bts); - - llist_for_each_entry(trx, &bts->trx_list, list) { - char *name = gsm_lchan_name(&trx->ts[3].lchan[4]); - - if (name) - printf(" %s", name); - else - printf("NULL name"); - } - printf("\n"); -} - - -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(); - test_bts_debug_print(); - - 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 81d656927..000000000 --- a/tests/channel/channel_test.ok +++ /dev/null @@ -1,2 +0,0 @@ -Testing subslot numbers for pchan types -Testing the lchan printing: (bts=45,trx=0,ts=3,ss=4) (bts=45,trx=1,ts=3,ss=4) 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 <jluebbe@debian.org> - * (C) 2009-2016 by Holger Hans Peter Freyther <zecke@selfish.org> - * (C) 2014 by Alexander Chemeris <Alexander.Chemeris@fairwaves.co> - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#include <openbsc/debug.h> -#include <openbsc/db.h> -#include <openbsc/gsm_subscriber.h> -#include <openbsc/gsm_04_11.h> -#include <openbsc/mgcp.h> - -#include <osmocom/core/application.h> - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <stdbool.h> -#include <inttypes.h> - -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 27e570372..000000000 --- a/tests/db/db_test.err +++ /dev/null @@ -1,3 +0,0 @@ -Going to migrate from revision 3 -[0;mGoing to migrate from revision 4 -[0;m
\ 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 Binary files differdeleted file mode 100644 index e59dcdca3..000000000 --- a/tests/db/hlr.sqlite3 +++ /dev/null diff --git a/tests/gbproxy/Makefile.am b/tests/gbproxy/Makefile.am index 2dd66dfd4..3291839b6 100644 --- a/tests/gbproxy/Makefile.am +++ b/tests/gbproxy/Makefile.am @@ -40,9 +40,6 @@ gbproxy_test_LDADD = \ $(top_builddir)/src/gprs/gprs_llc_parse.o \ $(top_builddir)/src/gprs/crc24.o \ $(top_builddir)/src/gprs/gprs_utils.o \ - $(top_builddir)/src/libcommon/libcommon.a \ - $(top_builddir)/src/libbsc/libbsc.a \ - $(top_builddir)/src/libtrau/libtrau.a \ $(LIBOSMOCORE_LIBS) \ $(LIBOSMOGB_LIBS) \ $(LIBOSMOGSM_LIBS) \ diff --git a/tests/gbproxy/gbproxy_test.c b/tests/gbproxy/gbproxy_test.c index 577daa95e..9672dcba6 100644 --- a/tests/gbproxy/gbproxy_test.c +++ b/tests/gbproxy/gbproxy_test.c @@ -49,6 +49,8 @@ #define MATCH_ANY (-1) +void *tall_bsc_ctx; + struct gbproxy_config gbcfg = {0}; struct llist_head *received_messages = NULL; 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 fcdc8f8ed..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 <zecke@selfish.org> - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <stdbool.h> -#include <arpa/inet.h> - -#include <openbsc/common_bsc.h> -#include <openbsc/gsm_04_08.h> -#include <openbsc/gsm_04_11.h> -#include <openbsc/gsm_subscriber.h> -#include <openbsc/gsm_data_shared.h> -#include <openbsc/debug.h> -#include <openbsc/arfcn_range_encode.h> -#include <openbsc/system_information.h> -#include <openbsc/abis_rsl.h> - -#include <osmocom/core/application.h> -#include <osmocom/gsm/sysinfo.h> - -#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, 0); - - _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, 0); - - _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, 0); - - /* 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, 0); - - 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, 0); - - 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/msc_vlr/Makefile.am b/tests/msc_vlr/Makefile.am deleted file mode 100644 index 10184fa4b..000000000 --- a/tests/msc_vlr/Makefile.am +++ /dev/null @@ -1,168 +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) \ - $(LIBOSMORANAP_CFLAGS) \ - $(LIBASN1C_CFLAGS) \ - $(LIBOSMOLEGACYMGCP_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) - -COMMON_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/libcommon/libcommon.a \ - $(LIBSMPP34_LIBS) \ - $(LIBOSMOCORE_LIBS) \ - $(LIBOSMOGSM_LIBS) \ - $(LIBCRYPTO_LIBS) \ - $(LIBOSMOVTY_LIBS) \ - $(LIBOSMOABIS_LIBS) \ - $(LIBOSMOSIGTRAN_LIBS) \ - $(LIBOSMORANAP_LIBS) \ - $(LIBASN1C_LIBS) \ - $(LIBOSMOLEGACYMGCP_LIBS) \ - $(LIBRARY_GSM) \ - -ldbi \ - -lrt \ - $(NULL) - -COMMON_LDFLAGS = \ - -Wl,--wrap=gsup_client_create \ - -Wl,--wrap=gsup_client_send \ - -Wl,--wrap=a_iface_tx_dtap \ - -Wl,--wrap=a_iface_tx_clear_cmd \ - -Wl,--wrap=a_iface_tx_paging \ - -Wl,--wrap=ranap_iu_tx \ - -Wl,--wrap=ranap_iu_tx_release \ - -Wl,--wrap=ranap_iu_tx_common_id \ - -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 = $(COMMON_LDADD) -msc_vlr_test_no_authen_LDFLAGS = $(COMMON_LDFLAGS) - -msc_vlr_test_gsm_authen_SOURCES = \ - msc_vlr_test_gsm_authen.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_gsm_authen_LDADD = $(COMMON_LDADD) -msc_vlr_test_gsm_authen_LDFLAGS = $(COMMON_LDFLAGS) - -msc_vlr_test_gsm_ciph_SOURCES = \ - msc_vlr_test_gsm_ciph.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_gsm_ciph_LDADD = $(COMMON_LDADD) -msc_vlr_test_gsm_ciph_LDFLAGS = $(COMMON_LDFLAGS) - -msc_vlr_test_umts_authen_SOURCES = \ - msc_vlr_test_umts_authen.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_umts_authen_LDADD = $(COMMON_LDADD) -msc_vlr_test_umts_authen_LDFLAGS = $(COMMON_LDFLAGS) - -msc_vlr_test_hlr_reject_SOURCES = \ - msc_vlr_test_hlr_reject.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_hlr_reject_LDADD = $(COMMON_LDADD) -msc_vlr_test_hlr_reject_LDFLAGS = $(COMMON_LDFLAGS) - -msc_vlr_test_hlr_timeout_SOURCES = \ - msc_vlr_test_hlr_timeout.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_hlr_timeout_LDADD = $(COMMON_LDADD) -msc_vlr_test_hlr_timeout_LDFLAGS = $(COMMON_LDFLAGS) - -msc_vlr_test_ms_timeout_SOURCES = \ - msc_vlr_test_ms_timeout.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_ms_timeout_LDADD = $(COMMON_LDADD) -msc_vlr_test_ms_timeout_LDFLAGS = $(COMMON_LDFLAGS) - -msc_vlr_test_reject_concurrency_SOURCES = \ - msc_vlr_test_reject_concurrency.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_reject_concurrency_LDADD = $(COMMON_LDADD) -msc_vlr_test_reject_concurrency_LDFLAGS = $(COMMON_LDFLAGS) - -msc_vlr_test_rest_SOURCES = \ - msc_vlr_test_rest.c \ - msc_vlr_tests.c \ - $(NULL) -msc_vlr_test_rest_LDADD = $(COMMON_LDADD) -msc_vlr_test_rest_LDFLAGS = $(COMMON_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 70b7614d0..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c +++ /dev/null @@ -1,924 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> - * - * All Rights Reserved - * - * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de> - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - VERBOSE_ASSERT(bssap_clear_sent, == 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, 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"); - expect_bssap_clear(); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == 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"); - expect_bssap_clear(); - ms_sends_msg("050130" "05f4" "03020100"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("050130" "05f4" "07060504"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0559084a32244332244302"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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, "423423423423420"), == 0, "%d"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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("0559084a32244332244302"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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, "423423423423420"), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches, using TMSI"); - expect_bssap_clear(); - ms_sends_msg("050130" "05f4" "03020100"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - gsup_rx("06010809710000000156f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - VERBOSE_ASSERT(bssap_clear_sent, == 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, 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"); - expect_bssap_clear(); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130" - "089910070000106005" /* IMSI */); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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 c12eba118..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err +++ /dev/null @@ -1,1997 +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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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)=423423423423420 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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, "423423423423420") == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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)=423423423423420 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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, "423423423423420") == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000010650 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 -DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:42342, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 IMSI DETACH for MSISDN:42342 -DREF VLR subscr MSISDN:42342 usage decreases to: 1 -DREF VLR subscr MSISDN:42342 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:42342 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 e0bd9673a..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c +++ /dev/null @@ -1,845 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> - * - * All Rights Reserved - * - * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de> - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - VERBOSE_ASSERT(bssap_clear_sent, == 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, 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"); - expect_bssap_clear(); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - OSMO_ASSERT(dtap_tx_confirmed); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches, using TMSI"); - expect_bssap_clear(); - ms_sends_msg("050130" "05f4" "03020100"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0559084a32244332244302"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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, "423423423423420"), == 0, "%d"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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_ciphered = 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("063217094b32244332244372f5"); - 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, "4234234234234275"), == 0, "%d"); - vlr_subscr_put(vsub); - - EXPECT_ACCEPTED(false); - thwart_rx_non_initial_requests(); - - 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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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("0559084a32244332244302"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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, "423423423423420"), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches, using TMSI"); - expect_bssap_clear(); - ms_sends_msg("050130" "05f4" "03020100"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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_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 b26f0d20e..000000000 --- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err +++ /dev/null @@ -1,1679 +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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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)=423423423423420 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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, "423423423423420") == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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: 4234234234234275F -DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234275 -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, "4234234234234275") == 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 -- 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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)=423423423423420 -DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423420 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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, "423423423423420") == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 095da8172..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.c +++ /dev/null @@ -1,447 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> - * - * All Rights Reserved - * - * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de> - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#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; - expect_bssap_clear(); - gsup_rx("09" "010809710000004026f0" "020102", NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%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; - expect_bssap_clear(); - gsup_rx("09" "010809710000004026f0" "020111", NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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; - expect_bssap_clear(); - gsup_rx("09" "010809710000004026f0" "020111", NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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; - expect_bssap_clear(); - gsup_rx("09" "010809710000004026f0" "020102", NULL); - VERBOSE_ASSERT(auth_request_sent, == false, "%d"); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%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; - expect_bssap_clear(); - 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"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - gsup_rx("05" "010809710000004026f0" "020102", - NULL); - VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - /* 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 c946c1efa..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err +++ /dev/null @@ -1,1165 +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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 -DREF VLR subscr MSISDN:46071 usage decreases 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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 -DREF VLR subscr MSISDN:46071 usage decreases 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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 -DREF VLR subscr MSISDN:46071 usage decreases 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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 c2f17c85f..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c +++ /dev/null @@ -1,118 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> - * - * All Rights Reserved - * - * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de> - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#include "msc_vlr_tests.h" - -#include <osmocom/core/logging.h> - -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); - expect_bssap_clear(); - fake_time_passes(1, 235); - btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - 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"); - expect_bssap_clear(); - fake_time_passes(1, 235); - btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - 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 e34490d8c..000000000 --- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err +++ /dev/null @@ -1,189 +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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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. - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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. - bssap_clear_sent == 1 - 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 d8a3a314e..000000000 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c +++ /dev/null @@ -1,189 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> - * - * All Rights Reserved - * - * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de> - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#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"); - expect_bssap_clear(); - fake_time_passes(1, 235); - btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - 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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - fake_time_passes(1, 235); - btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone."); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - 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 e267c5b0c..000000000 --- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err +++ /dev/null @@ -1,342 +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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=IMSI:901700000004620, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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. - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 1 -- 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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. - bssap_clear_sent == 1 - 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 32e0b40e2..000000000 --- a/tests/msc_vlr/msc_vlr_test_no_authen.c +++ /dev/null @@ -1,908 +0,0 @@ -/* Osmocom MSC+VLR end-to-end tests */ - -/* (C) 2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de> - * - * All Rights Reserved - * - * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de> - * - * 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 <http://www.gnu.org/licenses/>. - * - */ - -#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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%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"); - expect_bssap_clear(); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == 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"); - expect_bssap_clear(); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - btw("SMS is done, conn is gone"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("890106020041020000"); - VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("050130" "05f4" "07060504"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - /* 3GPP TS 23.003: 6.2.1 Composition of IMEI: the IMEI ends with a - * spare digit that shall be sent as zero by the MS. */ - ms_sends_msg("0559084a32244332244302"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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, "423423423423420"), == 0, "%d"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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("0559084a32244332244302"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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, "423423423423420"), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_no_authen_imeisv() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - /* No auth only works on GERAN */ - rx_from_ran = RAN_GERAN_A; - - comment_start(); - - net->vlr->cfg.retrieve_imeisv_early = true; - - btw("Location Update request causes an IMEISV ID request back to the MS"); - lu_result_sent = RES_NONE; - dtap_expect_tx("051803"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0559094332244332244372f5"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("Subscriber has the IMEISV from the ID Response"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imeisv, "4234234234234275"), == 0, "%d"); - vlr_subscr_put(vsub); - - 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"); - expect_bssap_clear(); - gsup_rx("06010809710000004026f0", NULL); - - btw("LU was successful, and the conn has already been closed"); - VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - EXPECT_CONN_COUNT(0); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_no_authen_imeisv_imei() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - rx_from_ran = RAN_GERAN_A; - - comment_start(); - - net->vlr->cfg.retrieve_imeisv_early = true; - net->vlr->cfg.check_imei_rqd = true; - - btw("Location Update request causes an IMEISV ID request back to the MS"); - lu_result_sent = RES_NONE; - dtap_expect_tx("051803"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0559094332244332244372f5"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("Subscriber has the IMEISV from the ID Response"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imeisv, "4234234234234275"), == 0, "%d"); - vlr_subscr_put(vsub); - - 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"); - expect_bssap_clear(); - ms_sends_msg("0559084a32244332244302"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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, "423423423423420"), == 0, "%d"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_no_authen_imeisv_tmsi() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - rx_from_ran = RAN_GERAN_A; - - comment_start(); - - net->vlr->cfg.retrieve_imeisv_early = true; - net->vlr->cfg.assign_tmsi = true; - - btw("Location Update request causes an IMEISV ID request back to the MS"); - lu_result_sent = RES_NONE; - dtap_expect_tx("051803"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0559094332244332244372f5"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("Subscriber has the IMEISV from the ID Response"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imeisv, "4234234234234275"), == 0, "%d"); - vlr_subscr_put(vsub); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - btw("LU was successful, and the conn has already been closed"); - EXPECT_CONN_COUNT(0); - - - BTW("subscriber sends LU Request, this time with the TMSI"); - btw("Location Update request causes an IMEISV ID request back to the MS"); - lu_result_sent = RES_NONE; - dtap_expect_tx("051803"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0559095332244332244372f6"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("Subscriber has the IMEISV from the ID Response"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imeisv, "5234234234234276"), == 0, "%d"); - vlr_subscr_put(vsub); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("050130" "05f4" "07060504"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - EXPECT_CONN_COUNT(0); - clear_vlr(); - comment_end(); -} - -void test_no_authen_imeisv_tmsi_imei() -{ - struct vlr_subscr *vsub; - const char *imsi = "901700000004620"; - - rx_from_ran = RAN_GERAN_A; - - comment_start(); - - net->vlr->cfg.retrieve_imeisv_early = true; - net->vlr->cfg.assign_tmsi = true; - net->vlr->cfg.check_imei_rqd = true; - - btw("Location Update request causes an IMEISV ID request back to the MS"); - lu_result_sent = RES_NONE; - dtap_expect_tx("051803"); - ms_sends_msg("050802008168000130089910070000006402"); - OSMO_ASSERT(dtap_tx_confirmed); - - btw("MS replies with an Identity Response, causes LU to commence with a GSUP LU request to HLR"); - gsup_expect_tx("04010809710000004026f0"); - ms_sends_msg("0559094332244332244372f5"); - OSMO_ASSERT(gsup_tx_confirmed); - VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d"); - - btw("Subscriber has the IMEISV from the ID Response"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imeisv, "4234234234234275"), == 0, "%d"); - vlr_subscr_put(vsub); - - 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("0559084a32244332244302"); - - 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"); - expect_bssap_clear(); - ms_sends_msg("055b"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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 IMEISV, IMEI and TMSI"); - vsub = vlr_subscr_find_by_imsi(net->vlr, imsi); - OSMO_ASSERT(vsub); - VERBOSE_ASSERT(strcmp(vsub->imeisv, "4234234234234275"), == 0, "%d"); - VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423420"), == 0, "%d"); - VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x"); - vlr_subscr_put(vsub); - - BTW("subscriber detaches"); - expect_bssap_clear(); - ms_sends_msg("050130089910070000006402"); - VERBOSE_ASSERT(bssap_clear_sent, == true, "%d"); - - 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, - test_no_authen_imeisv, - test_no_authen_imeisv_imei, - test_no_authen_imeisv_tmsi, - test_no_authen_imeisv_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 931a72f78..000000000 --- a/tests/msc_vlr/msc_vlr_test_no_authen.err +++ /dev/null @@ -1,2119 +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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 IMSI DETACH for MSISDN:46071 -DREF VLR subscr MSISDN:46071 usage decreases to: 1 -DREF VLR subscr MSISDN:46071 usage decreases to: 0 -DREF freeing VLR subscr MSISDN:46071 -DMM msc_subscr_conn_close(vsub=unknown, cause=0): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -DREF unknown: MSC conn use - 1 == 0 -DRLL Freeing subscriber connection with NULL subscriber - bssap_clear_sent == 1 - 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 -DREF VLR subscr IMSI:901700000004620 usage decreases to: 1 -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 -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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DMM msc_subscr_conn_close(vsub=MSISDN:46071, cause=2): no conn fsm, releasing directly without release event. -- BSSAP Clear --RAN_GERAN_A--> MS -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 - bssap_clear_sent == 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 -DREF VLR subscr MSISDN:46071 usage decreases to: 2 -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 -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_SET |