aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/abis/Makefile.am34
-rw-r--r--tests/abis/abis_test.c93
-rw-r--r--tests/abis/abis_test.ok9
-rw-r--r--tests/bsc-nat-trie/Makefile.am17
-rw-r--r--tests/bsc-nat-trie/bsc_nat_trie_test.c87
-rw-r--r--tests/bsc-nat-trie/bsc_nat_trie_test.ok20
-rw-r--r--tests/bsc-nat-trie/prefixes.csv25
-rw-r--r--tests/bsc-nat/Makefile.am59
-rw-r--r--tests/bsc-nat/barr.cfg12
-rw-r--r--tests/bsc-nat/barr_dup.cfg2
-rw-r--r--tests/bsc-nat/bsc_data.c275
-rw-r--r--tests/bsc-nat/bsc_nat_test.c1584
-rw-r--r--tests/bsc-nat/bsc_nat_test.ok39
-rw-r--r--tests/bsc-nat/prefixes.csv2
-rw-r--r--tests/bsc/Makefile.am45
-rw-r--r--tests/bsc/bsc_test.c209
-rw-r--r--tests/bsc/bsc_test.ok4
-rw-r--r--tests/channel/Makefile.am35
-rw-r--r--tests/channel/channel_test.c90
-rw-r--r--tests/channel/channel_test.ok1
-rw-r--r--tests/db/Makefile.am47
-rw-r--r--tests/db/db_test.c286
-rw-r--r--tests/db/db_test.err2
-rw-r--r--tests/db/db_test.ok4
-rw-r--r--tests/db/hlr.sqlite3bin29696 -> 0 bytes
-rw-r--r--tests/gsm0408/Makefile.am34
-rw-r--r--tests/gsm0408/gsm0408_test.c697
-rw-r--r--tests/gsm0408/gsm0408_test.ok204
-rw-r--r--tests/mgcp/Makefile.am92
-rw-r--r--tests/mgcp/mgcp_test.c1227
-rw-r--r--tests/mgcp/mgcp_test.ok480
-rw-r--r--tests/mgcp/mgcp_transcoding_test.c654
-rw-r--r--tests/mgcp/mgcp_transcoding_test.ok539
-rw-r--r--tests/mgcp/mgcpgw_client_test.c165
-rw-r--r--tests/mgcp/mgcpgw_client_test.err1
-rw-r--r--tests/mgcp/mgcpgw_client_test.ok31
-rw-r--r--tests/mm_auth/Makefile.am37
-rw-r--r--tests/mm_auth/mm_auth_test.c84
-rw-r--r--tests/mm_auth/mm_auth_test.ok1
-rw-r--r--tests/msc_vlr/Makefile.am160
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_authen.c888
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_authen.err1946
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_authen.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_ciph.c1436
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_ciph.err1647
-rw-r--r--tests/msc_vlr/msc_vlr_test_gsm_ciph.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_reject.c425
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_reject.err1132
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_reject.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_timeout.c114
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_timeout.err183
-rw-r--r--tests/msc_vlr/msc_vlr_test_hlr_timeout.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_test_ms_timeout.c183
-rw-r--r--tests/msc_vlr/msc_vlr_test_ms_timeout.err333
-rw-r--r--tests/msc_vlr/msc_vlr_test_ms_timeout.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_test_no_authen.c508
-rw-r--r--tests/msc_vlr/msc_vlr_test_no_authen.err1165
-rw-r--r--tests/msc_vlr/msc_vlr_test_no_authen.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_test_reject_concurrency.c379
-rw-r--r--tests/msc_vlr/msc_vlr_test_reject_concurrency.err1763
-rw-r--r--tests/msc_vlr/msc_vlr_test_reject_concurrency.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_test_rest.c188
-rw-r--r--tests/msc_vlr/msc_vlr_test_rest.err475
-rw-r--r--tests/msc_vlr/msc_vlr_test_rest.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_test_umts_authen.c558
-rw-r--r--tests/msc_vlr/msc_vlr_test_umts_authen.err1367
-rw-r--r--tests/msc_vlr/msc_vlr_test_umts_authen.ok1
-rw-r--r--tests/msc_vlr/msc_vlr_tests.c763
-rw-r--r--tests/msc_vlr/msc_vlr_tests.h154
-rw-r--r--tests/nanobts_omlattr/Makefile.am34
-rw-r--r--tests/nanobts_omlattr/nanobts_omlattr_test.c284
-rw-r--r--tests/nanobts_omlattr/nanobts_omlattr_test.ok26
-rw-r--r--tests/slhc/Makefile.am15
-rw-r--r--tests/slhc/slhc_test.c272
-rw-r--r--tests/slhc/slhc_test.ok154
-rw-r--r--tests/smpp/Makefile.am40
-rw-r--r--tests/smpp/smpp_test.c73
-rw-r--r--tests/smpp/smpp_test.err2
-rw-r--r--tests/smpp/smpp_test.ok1
-rw-r--r--tests/smpp_test_runner.py137
-rw-r--r--tests/sms_queue/Makefile.am49
-rw-r--r--tests/sms_queue/sms_queue_test.c215
-rw-r--r--tests/sms_queue/sms_queue_test.err0
-rw-r--r--tests/sms_queue/sms_queue_test.ok98
-rw-r--r--tests/subscr/Makefile.am43
-rw-r--r--tests/subscr/bsc_subscr_test.c130
-rw-r--r--tests/subscr/bsc_subscr_test.err17
-rw-r--r--tests/subscr/bsc_subscr_test.ok11
-rw-r--r--tests/trau/Makefile.am45
-rw-r--r--tests/trau/trau_test.c84
-rw-r--r--tests/trau/trau_test.ok10
-rw-r--r--tests/vlr/Makefile.am22
-rw-r--r--tests/vlr/vlr_test.c694
93 files changed, 0 insertions, 25459 deletions
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 cf8ebaf20..000000000
--- a/tests/bsc-nat-trie/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS=-Wall -ggdb3 $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBOSMOSCCP_CFLAGS) $(LIBOSMOABIS_CFLAGS) $(COVERAGE_CFLAGS)
-AM_LDFLAGS = $(COVERAGE_LDFLAGS)
-
-EXTRA_DIST = bsc_nat_trie_test.ok prefixes.csv
-
-noinst_PROGRAMS = bsc_nat_trie_test
-
-bsc_nat_trie_test_SOURCES = bsc_nat_trie_test.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c
-bsc_nat_trie_test_LDADD = $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libmgcp/libmgcp.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) $(LIBOSMOGSM_LIBS) -lrt \
- $(LIBOSMOSCCP_LIBS) $(LIBOSMOVTY_LIBS) \
- $(LIBOSMOABIS_LIBS)
diff --git a/tests/bsc-nat-trie/bsc_nat_trie_test.c b/tests/bsc-nat-trie/bsc_nat_trie_test.c
deleted file mode 100644
index 4b4df2faf..000000000
--- a/tests/bsc-nat-trie/bsc_nat_trie_test.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * (C) 2013 by On-Waves
- * (C) 2013 by Holger Hans Peter Freyther <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 40be3a32f..000000000
--- a/tests/bsc-nat/Makefile.am
+++ /dev/null
@@ -1,59 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOCTRL_LIBS) \
- $(LIBOSMOSCCP_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(LIBOSMONETIF_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(NULL)
-
-AM_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- bsc_nat_test.ok \
- bsc_data.c \
- barr.cfg \
- barr_dup.cfg \
- prefixes.csv \
- $(NULL)
-
-noinst_PROGRAMS = \
- bsc_nat_test \
- $(NULL)
-
-bsc_nat_test_SOURCES = \
- bsc_nat_test.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_filter.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_sccp.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_utils.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_mgcp_utils.c \
- $(top_srcdir)/src/osmo-bsc_nat/bsc_nat_filter.c
-
-bsc_nat_test_LDADD = \
- $(top_builddir)/src/libfilter/libfilter.a \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libcommon-cs/libcommon-cs.a \
- $(top_builddir)/src/libmgcp/libmgcp.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBOSMOSCCP_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- $(LIBOSMONETIF_LIBS) \
- $(LIBOSMOCTRL_LIBS) \
- -lrt \
- $(NULL)
diff --git a/tests/bsc-nat/barr.cfg b/tests/bsc-nat/barr.cfg
deleted file mode 100644
index a9a4a2b31..000000000
--- a/tests/bsc-nat/barr.cfg
+++ /dev/null
@@ -1,12 +0,0 @@
-12123124:3:2:
-12123123:3:1:
-12123128:3:6:
-12123125:3:3:
-12123127:3:5:
-12123126:3:4:
-12123120:3:4:
-12123119:3:4:
-12123118:3:4:
-12123117:3:4:
-12123116:3:4:
-12123115:3:4:
diff --git a/tests/bsc-nat/barr_dup.cfg b/tests/bsc-nat/barr_dup.cfg
deleted file mode 100644
index ea94631ce..000000000
--- a/tests/bsc-nat/barr_dup.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-12123124:3:2:
-12123124:3:2:
diff --git a/tests/bsc-nat/bsc_data.c b/tests/bsc-nat/bsc_data.c
deleted file mode 100644
index 3a9f1da62..000000000
--- a/tests/bsc-nat/bsc_data.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/* test data */
-
-/* BSC -> MSC, CR */
-static const uint8_t bsc_cr[] = {
-0x00, 0x2e, 0xfd,
-0x01, 0x00, 0x00, 0x15, 0x02, 0x02, 0x04, 0x02,
-0x42, 0xfe, 0x0f, 0x21, 0x00, 0x1f, 0x57, 0x05,
-0x08, 0x00, 0x72, 0xf4, 0x80, 0x20, 0x1c, 0xc3,
-0x51, 0x17, 0x12, 0x05, 0x08, 0x20, 0x72, 0xf4,
-0x90, 0x20, 0x1d, 0x50, 0x08, 0x29, 0x47, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x80, 0x00 };
-
-static const uint8_t bsc_cr_patched[] = {
-0x00, 0x2e, 0xfd,
-0x01, 0x00, 0x00, 0x05, 0x02, 0x02, 0x04, 0x02,
-0x42, 0xfe, 0x0f, 0x21, 0x00, 0x1f, 0x57, 0x05,
-0x08, 0x00, 0x72, 0xf4, 0x80, 0x20, 0x1c, 0xc3,
-0x51, 0x17, 0x12, 0x05, 0x08, 0x20, 0x72, 0xf4,
-0x90, 0x20, 0x1d, 0x50, 0x08, 0x29, 0x47, 0x80,
-0x00, 0x00, 0x00, 0x00, 0x80, 0x00 };
-
-/* CC, MSC -> BSC */
-static const uint8_t msc_cc[] = {
-0x00, 0x0a, 0xfd,
-0x02, 0x00, 0x00, 0x05, 0x01, 0x1f, 0xe4, 0x02,
-0x01, 0x00 };
-static const uint8_t msc_cc_patched[] = {
-0x00, 0x0a, 0xfd,
-0x02, 0x00, 0x00, 0x15, 0x01, 0x1f, 0xe4, 0x02,
-0x01, 0x00 };
-
-/* Classmark, BSC -> MSC */
-static const uint8_t bsc_dtap[] = {
-0x00, 0x17, 0xfd,
-0x06, 0x01, 0x1f, 0xe4, 0x00, 0x01, 0x10, 0x00,
-0x0e, 0x54, 0x12, 0x03, 0x50, 0x18, 0x93, 0x13,
-0x06, 0x60, 0x14, 0x45, 0x00, 0x81, 0x00 };
-
-static const uint8_t bsc_dtap_patched[] = {
-0x00, 0x17, 0xfd,
-0x06, 0x01, 0x1f, 0xe4, 0x00, 0x01, 0x10, 0x00,
-0x0e, 0x54, 0x12, 0x03, 0x50, 0x18, 0x93, 0x13,
-0x06, 0x60, 0x14, 0x45, 0x00, 0x81, 0x00 };
-
-/* Clear command, MSC -> BSC */
-static const uint8_t msc_dtap[] = {
-0x00, 0x0d, 0xfd,
-0x06, 0x00, 0x00, 0x05, 0x00, 0x01, 0x06, 0x00,
-0x04, 0x20, 0x04, 0x01, 0x09 };
-static const uint8_t msc_dtap_patched[] = {
-0x00, 0x0d, 0xfd,
-0x06, 0x00, 0x00, 0x15, 0x00, 0x01, 0x06, 0x00,
-0x04, 0x20, 0x04, 0x01, 0x09 };
-
-/*RLSD, MSC -> BSC */
-static const uint8_t msc_rlsd[] = {
-0x00, 0x0a, 0xfd,
-0x04, 0x00, 0x00, 0x05, 0x01, 0x1f, 0xe4, 0x00,
-0x01, 0x00 };
-static const uint8_t msc_rlsd_patched[] = {
-0x00, 0x0a, 0xfd,
-0x04, 0x00, 0x00, 0x15, 0x01, 0x1f, 0xe4, 0x00,
-0x01, 0x00 };
-
-/* RLC, BSC -> MSC */
-static const uint8_t bsc_rlc[] = {
-0x00, 0x07, 0xfd,
-0x05, 0x01, 0x1f, 0xe4, 0x00, 0x00, 0x15 };
-
-static const uint8_t bsc_rlc_patched[] = {
-0x00, 0x07, 0xfd,
-0x05, 0x01, 0x1f, 0xe4, 0x00, 0x00, 0x05 };
-
-
-/* a paging command */
-static const uint8_t paging_by_lac_cmd[] = {
-0x00, 0x22, 0xfd, 0x09,
-0x00, 0x03, 0x07, 0x0b, 0x04, 0x43, 0x02, 0x00,
-0xfe, 0x04, 0x43, 0x5c, 0x00, 0xfe, 0x12, 0x00,
-0x10, 0x52, 0x08, 0x08, 0x29, 0x47, 0x10, 0x02,
-0x01, 0x50, 0x02, 0x30, 0x1a, 0x03, 0x05, 0x20,
-0x15 };
-
-/* an assignment command */
-static const uint8_t ass_cmd[] = {
-0x00, 0x12, 0xfd, 0x06,
-0x00, 0x00, 0x49, 0x00, 0x01, 0x0b, 0x00, 0x09,
-0x01, 0x0b, 0x03, 0x01, 0x0a, 0x11, 0x01, 0x00,
-0x01 };
-
-/* identity response */
-static const uint8_t id_resp[] = {
-0x00, 0x15, 0xfd, 0x06, 0x01, 0x1c, 0xdc,
-0x00, 0x01, 0x0e, 0x01, 0x00, 0x0b, 0x05, 0x59,
-0x08, 0x29, 0x40, 0x21, 0x03, 0x07, 0x48, 0x66,
-0x31
-};
-
-/* sms code msg */
-static const uint8_t smsc_rewrite[] = {
-0x00, 0x30, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
-0x01, 0x29, 0x01, 0x03, 0x26, 0x09, 0x01, 0x23,
-0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
-0x00, 0x10, 0x50, 0x17, 0x21, 0x0c, 0x0f, 0x81,
-0x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
-0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
-0xbf, 0xeb, 0x20
-};
-
-static const uint8_t smsc_rewrite_patched[] = {
-0x00, 0x31, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
-0x01, 0x2a, 0x01, 0x03, 0x27, 0x09, 0x01, 0x24,
-0x00, 0x0c, 0x00, 0x08, 0x91, 0x66, 0x66, 0x66,
-0x66, 0x66, 0x66, 0xf7, 0x17, 0x01, 0x0c, 0x0f,
-0x81, 0x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46,
-0xf5, 0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c,
-0xca, 0xbf, 0xeb, 0x20
-};
-
-static const uint8_t smsc_rewrite_patched_hdr[] = {
-0x00, 0x30, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
-0x01, 0x29, 0x01, 0x03, 0x26, 0x09, 0x01, 0x23,
-0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
-0x00, 0x10, 0x50, 0x17, 0x01, 0x0c, 0x0f, 0x81,
-0x00, 0x94, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
-0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
-0xbf, 0xeb, 0x20
-};
-
-static const uint8_t smsc_rewrite_num_patched[] = {
-0x00, 0x2f, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
-0x01, 0x28, 0x01, 0x03, 0x25, 0x09, 0x01, 0x22,
-0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
-0x00, 0x10, 0x50, 0x16, 0x21, 0x0c, 0x0d, 0x91,
- 0x23, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
-0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
-0xbf, 0xeb, 0x20
-};
-
-static const uint8_t smsc_rewrite_num_patched_tp_srr[] = {
-0x00, 0x2f, 0xfd, 0x06, 0x01, 0x13, 0x1e, 0x00,
-0x01, 0x28, 0x01, 0x03, 0x25, 0x09, 0x01, 0x22,
-0x00, 0x0c, 0x00, 0x07, 0x91, 0x36, 0x19, 0x08,
-0x00, 0x10, 0x50, 0x16, 0x01, 0x0c, 0x0d, 0x91,
- 0x23, 0x51, 0x87, 0x86, 0x78, 0x46, 0xf5,
-0x00, 0x00, 0x09, 0xcc, 0xb7, 0xbd, 0x0c, 0xca,
-0xbf, 0xeb, 0x20
-};
-
-/*
- * MGCP messages
- */
-
-/* nothing to patch */
-static const char crcx[] = "CRCX 23265295 8@mgw MGCP 1.0\r\nC: 394b0439fb\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n";
-static const char crcx_patched[] = "CRCX 23265295 1e@mgw MGCP 1.0\r\nC: 394b0439fb\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n";
-
-
-/* patch the ip and port */
-static const char crcx_resp[] = "200 23265295\r\nI: 1\r\n\r\nv=0\r\nc=IN IP4 172.16.18.2\r\nm=audio 4002 RTP/AVP 98 3\r\na=rtpmap:98 AMR/8000\r\n";
-static const char crcx_resp_patched[] = "200 23265295\r\nI: 1\r\n\r\nv=0\r\nc=IN IP4 10.0.0.1\r\nm=audio 999 RTP/AVP 98 3\r\na=rtpmap:98 AMR/8000\r\na=fmtp:98 mode-set=2\r\n";
-
-/* patch the ip and port */
-static const char mdcx[] = "MDCX 23330829 8@mgw MGCP 1.0\r\nC: 394b0439fb\r\nI: 1\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n\r\nv=0\r\no=- 1049380491 0 IN IP4 172.16.18.2\r\ns=-\r\nc=IN IP4 172.16.18.2\r\nt=0 0\r\nm=audio 4410 RTP/AVP 126\r\na=rtpmap:126 AMR/8000/1\r\na=fmtp:126 mode-set=2;start-mode=0\r\na=ptime:20\r\na=recvonly\r\nm=image 4412 udptl t38\r\na=T38FaxVersion:0\r\na=T38MaxBitRate:14400\r\n";
-static const char mdcx_patched[] = "MDCX 23330829 1e@mgw MGCP 1.0\r\nC: 394b0439fb\r\nI: 1\r\nL: p:20, a:AMR, nt:IN\r\nM: recvonly\r\n\r\nv=0\r\no=- 1049380491 0 IN IP4 172.16.18.2\r\ns=-\r\nc=IN IP4 10.0.0.23\r\nt=0 0\r\nm=audio 6666 RTP/AVP 126\r\na=rtpmap:126 AMR/8000/1\r\na=fmtp:126 mode-set=2;start-mode=0\r\na=ptime:20\r\na=recvonly\r\nm=image 4412 udptl t38\r\na=T38FaxVersion:0\r\na=T38MaxBitRate:14400\r\n";
-
-
-static const char mdcx_resp[] = "200 23330829\r\n\r\nv=0\r\nc=IN IP4 172.16.18.2\r\nm=audio 4002 RTP/AVP 98\r\na=rtpmap:98 AMR/8000\r\n";
-static const char mdcx_resp_patched[] = "200 23330829\r\n\r\nv=0\r\nc=IN IP4 10.0.0.23\r\nm=audio 5555 RTP/AVP 98\r\na=rtpmap:98 AMR/8000\r\na=fmtp:98 mode-set=2\r\n";
-
-/* different line ending */
-static const char mdcx_resp2[] = "200 33330829\n\nv=0\nc=IN IP4 172.16.18.2\nm=audio 4002 RTP/AVP 98\na=rtpmap:98 AMR/8000\n";
-static const char mdcx_resp_patched2[] = "200 33330829\n\nv=0\nc=IN IP4 10.0.0.23\nm=audio 5555 RTP/AVP 98\na=rtpmap:98 AMR/8000\na=fmtp:98 mode-set=2\n";
-static const char mdcx_resp_patched2_noamr[] = "200 33330829\n\nv=0\nc=IN IP4 10.0.0.23\nm=audio 5555 RTP/AVP 98\na=rtpmap:98 AMR/8000\n";
-
-struct mgcp_patch_test {
- const char *orig;
- const char *patch;
- const char *ip;
- const int port;
- const int payload_type;
- const int ensure_mode_set;
-};
-
-static const struct mgcp_patch_test mgcp_messages[] = {
- {
- .orig = crcx,
- .patch = crcx_patched,
- .ip = "0.0.0.0",
- .port = 2323,
- .ensure_mode_set = 1,
- },
- {
- .orig = crcx_resp,
- .patch = crcx_resp_patched,
- .ip = "10.0.0.1",
- .port = 999,
- .payload_type = 98,
- .ensure_mode_set = 1,
- },
- {
- .orig = mdcx,
- .patch = mdcx_patched,
- .ip = "10.0.0.23",
- .port = 6666,
- .payload_type = 126,
- .ensure_mode_set = 1,
- },
- {
- .orig = mdcx_resp,
- .patch = mdcx_resp_patched,
- .ip = "10.0.0.23",
- .port = 5555,
- .payload_type = 98,
- .ensure_mode_set = 1,
- },
- {
- .orig = mdcx_resp2,
- .patch = mdcx_resp_patched2,
- .ip = "10.0.0.23",
- .port = 5555,
- .payload_type = 98,
- .ensure_mode_set = 1,
- },
- {
- .orig = mdcx_resp2,
- .patch = mdcx_resp_patched2_noamr,
- .ip = "10.0.0.23",
- .port = 5555,
- .payload_type = 98,
- .ensure_mode_set = 0,
- },
-};
-
-/* CC Setup messages */
-static const uint8_t cc_setup_national[] = {
- 0x00, 0x20, 0xfd, 0x06, 0x01, 0x12,
- 0x6d, 0x00, 0x01, 0x19, 0x01, 0x00, 0x16, 0x03,
- 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
- 0x81, 0x5e, 0x06, 0x81, 0x10, 0x27, 0x33, 0x63,
- 0x66, 0x15, 0x02, 0x11, 0x01
-};
-
-static const uint8_t cc_setup_national_patched[] = {
- 0x00, 0x21, 0xfd, 0x06, 0x01, 0x12,
- 0x6d, 0x00, 0x01, 0x1a, 0x01, 0x00, 0x17, 0x03,
- 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
- 0x81, 0x5e, 0x07, 0x91, 0x94, 0x71, 0x32, 0x33,
- 0x66, 0xf6, 0x15, 0x02, 0x11, 0x01
-};
-
-/* patch the phone number of cc_setup_national_patched */
-static const uint8_t cc_setup_national_patched_patched[] = {
- 0x00, 0x21, 0xfd, 0x06, 0x01, 0x12,
- 0x6d, 0x00, 0x01, 0x1a, 0x01, 0x00, 0x17, 0x03,
- 0x05, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
- 0x81, 0x5e, 0x07, 0x91, 0x63, 0x71, 0x32, 0x33,
- 0x66, 0xf6, 0x15, 0x02, 0x11, 0x01
-};
-
-static const uint8_t cc_setup_international[] = {
- 0x00, 0x22, 0xfd, 0x06, 0x01, 0x13,
- 0xe7, 0x00, 0x01, 0x1b, 0x01, 0x00, 0x18, 0x03,
- 0x45, 0x04, 0x06, 0x60, 0x04, 0x02, 0x00, 0x05,
- 0x81, 0x5e, 0x08, 0x81, 0x00, 0x94, 0x71, 0x33,
- 0x63, 0x66, 0x03, 0x15, 0x02, 0x11, 0x01
-};
-
-static const uint8_t cc_setup_national_again[] = {
- 0x00, 0x22, 0xfd, 0x06, 0x01, 0x12, 0x6d, 0x00,
- 0x01, 0x1b, 0x01, 0x00, 0x18, 0x03, 0x05, 0x04,
- 0x06, 0x60, 0x04, 0x02, 0x00, 0x05, 0x81, 0x5e,
- 0x08, 0x81, 0x63, 0x94, 0x71, 0x32, 0x33, 0x66,
- 0xf6, 0x15, 0x02, 0x11, 0x01
-};
diff --git a/tests/bsc-nat/bsc_nat_test.c b/tests/bsc-nat/bsc_nat_test.c
deleted file mode 100644
index 2914a01b5..000000000
--- a/tests/bsc-nat/bsc_nat_test.c
+++ /dev/null
@@ -1,1584 +0,0 @@
-/*
- * BSC NAT Message filtering
- *
- * (C) 2010-2013 by Holger Hans Peter Freyther <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, &timeslot);
-
- uint16_t cic = htons(timeslot & 0x1f);
- if (memcmp(&cic, &msg->l2h[16], sizeof(cic)) != 0) {
- printf("Message was not patched properly\n");
- printf("data cic: 0x%x %s\n", cic, osmo_hexdump(msg->l2h, msgb_l2len(msg)));
- abort();
- }
-
- talloc_free(parsed);
-
- bsc_mgcp_dlcx(&con);
- if (con.bsc_endp != -1 || con.msc_endp != -1 ||
- con.bsc->_endpoint_status[1] != 0 || con.bsc->last_endpoint != 0x1) {
- printf("Clearing should remove the mapping.\n");
- abort();
- }
-
- bsc_config_free(bsc->cfg);
- bsc_nat_free(nat);
-}
-
-/* test the code to find a given connection */
-static void test_mgcp_find(void)
-{
- struct bsc_nat *nat;
- struct bsc_connection *con;
- struct nat_sccp_connection *sccp_con;
-
- printf("Testing finding of a BSC Connection\n");
-
- nat = bsc_nat_alloc();
- con = bsc_connection_alloc(nat);
- llist_add(&con->list_entry, &nat->bsc_connections);
-
- sccp_con = talloc_zero(con, struct nat_sccp_connection);
- sccp_con->msc_endp = 12;
- sccp_con->bsc_endp = 12;
- sccp_con->bsc = con;
- llist_add(&sccp_con->list_entry, &nat->sccp_connections);
-
- if (bsc_mgcp_find_con(nat, 11) != NULL) {
- printf("Found the wrong connection.\n");
- abort();
- }
-
- if (bsc_mgcp_find_con(nat, 12) != sccp_con) {
- printf("Didn't find the connection\n");
- abort();
- }
-
- /* free everything */
- bsc_nat_free(nat);
-}
-
-static void test_mgcp_rewrite(void)
-{
- int i;
- struct msgb *output;
- printf("Testing rewriting MGCP messages.\n");
-
- for (i = 0; i < ARRAY_SIZE(mgcp_messages); ++i) {
- const char *orig = mgcp_messages[i].orig;
- const char *patc = mgcp_messages[i].patch;
- const char *ip = mgcp_messages[i].ip;
- const int port = mgcp_messages[i].port;
- const int expected_payload_type = mgcp_messages[i].payload_type;
- const int ensure_mode_set = mgcp_messages[i].ensure_mode_set;
- int payload_type = -1;
-
- char *input = strdup(orig);
-
- output = bsc_mgcp_rewrite(input, strlen(input), 0x1e,
- ip, port, -1, &payload_type, ensure_mode_set);
-
- if (payload_type != -1) {
- fprintf(stderr, "Found media payload type %d in SDP data\n",
- payload_type);
- if (payload_type != expected_payload_type) {
- printf("Wrong payload type %d (expected %d)\n",
- payload_type, expected_payload_type);
- abort();
- }
- }
-
- if (msgb_l2len(output) != strlen(patc)) {
- printf("Wrong sizes for test: %d %u != %zu != %zu\n", i, msgb_l2len(output), strlen(patc), strlen(orig));
- printf("String '%s' vs '%s'\n", (const char *) output->l2h, patc);
- abort();
- }
-
- if (memcmp(output->l2h, patc, msgb_l2len(output)) != 0) {
- printf("Broken on %d msg: '%s'\n", i, (const char *) output->l2h);
- abort();
- }
-
- msgb_free(output);
- free(input);
- }
-}
-
-static void test_mgcp_parse(void)
-{
- int code, ci;
- char transaction[60];
-
- printf("Testing MGCP response parsing.\n");
-
- if (bsc_mgcp_parse_response(crcx_resp, &code, transaction) != 0) {
- printf("Failed to parse CRCX resp.\n");
- abort();
- }
-
- if (code != 200) {
- printf("Failed to parse the CODE properly. Got: %d\n", code);
- abort();
- }
-
- if (strcmp(transaction, "23265295") != 0) {
- printf("Failed to parse transaction id: '%s'\n", transaction);
- abort();
- }
-
- ci = bsc_mgcp_extract_ci(crcx_resp);
- if (ci != 1) {
- printf("Failed to parse the CI. Got: %d\n", ci);
- abort();
- }
-}
-
-struct cr_filter {
- const uint8_t *data;
- int length;
- int result;
- int contype;
-
- const char *bsc_imsi_allow;
- const char *bsc_imsi_deny;
- const char *nat_imsi_deny;
- int nat_cm_reject_cause;
- int nat_lu_reject_cause;
- int bsc_cm_reject_cause;
- int bsc_lu_reject_cause;
- int want_cm_reject_cause;
- int want_lu_reject_cause;
-};
-
-static struct cr_filter cr_filter[] = {
- {
- .data = bssmap_cr,
- .length = sizeof(bssmap_cr),
- .result = 1,
- .contype = FLT_CON_TYPE_CM_SERV_REQ,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = 1,
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- .data = pag_resp,
- .length = sizeof(pag_resp),
- .result = 1,
- .contype = FLT_CON_TYPE_PAG_RESP,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- /* nat deny is before blank/null BSC */
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = -3,
- .nat_imsi_deny = "[0-9]*",
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- /* BSC allow is before NAT deny */
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = 1,
- .nat_imsi_deny = "[0-9]*",
- .bsc_imsi_allow = "2440[0-9]*",
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- /* BSC allow is before NAT deny */
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = 1,
- .bsc_imsi_allow = "[0-9]*",
- .nat_imsi_deny = "[0-9]*",
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- /* filter as deny is first */
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = 1,
- .bsc_imsi_deny = "[0-9]*",
- .bsc_imsi_allow = "[0-9]*",
- .nat_imsi_deny = "[0-9]*",
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- /* deny by nat rule */
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = -3,
- .bsc_imsi_deny = "000[0-9]*",
- .nat_imsi_deny = "[0-9]*",
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- /* deny by nat rule */
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = -3,
- .bsc_imsi_deny = "000[0-9]*",
- .nat_imsi_deny = "[0-9]*",
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = 0x23,
- .nat_lu_reject_cause = 0x42,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = 0x42,
- .want_cm_reject_cause = 0x23,
- },
- {
- /* deny by bsc rule */
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = -2,
- .bsc_imsi_deny = "[0-9]*",
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .want_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- },
- {
- /* deny by bsc rule */
- .data = bss_lu,
- .length = sizeof(bss_lu),
- .result = -2,
- .bsc_imsi_deny = "[0-9]*",
- .contype = FLT_CON_TYPE_LU,
- .nat_cm_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .nat_lu_reject_cause = GSM48_REJECT_PLMN_NOT_ALLOWED,
- .bsc_cm_reject_cause = 0x42,
- .bsc_lu_reject_cause = 0x23,
- .want_lu_reject_cause = 0x23,
- .want_cm_reject_cause = 0x42,
- },
-};
-
-static void test_cr_filter()
-{
- int i, res, contype;
- struct msgb *msg = msgb_alloc(4096, "test_cr_filter");
- struct bsc_nat_parsed *parsed;
- struct bsc_msg_acc_lst *nat_lst, *bsc_lst;
- struct bsc_msg_acc_lst_entry *nat_entry, *bsc_entry;
- struct bsc_filter_reject_cause cause;
-
- struct bsc_nat *nat = bsc_nat_alloc();
- struct bsc_connection *bsc = bsc_connection_alloc(nat);
- bsc->cfg = bsc_config_alloc(nat, "foo", 0);
- bsc_config_add_lac(bsc->cfg, 1234);
- bsc->cfg->acc_lst_name = "bsc";
- nat->acc_lst_name = "nat";
-
- nat_lst = bsc_msg_acc_lst_get(nat, &nat->access_lists, "nat");
- bsc_lst = bsc_msg_acc_lst_get(nat, &nat->access_lists, "bsc");
-
- bsc_entry = bsc_msg_acc_lst_entry_create(bsc_lst);
- nat_entry = bsc_msg_acc_lst_entry_create(nat_lst);
-
- /* test the default value as we are going to overwrite it */
- OSMO_ASSERT(bsc_entry->cm_reject_cause == GSM48_REJECT_PLMN_NOT_ALLOWED);
- OSMO_ASSERT(bsc_entry->lu_reject_cause == GSM48_REJECT_PLMN_NOT_ALLOWED);
-
- for (i = 0; i < ARRAY_SIZE(cr_filter); ++i) {
- char *imsi;
- msgb_reset(msg);
- copy_to_msg(msg, cr_filter[i].data, cr_filter[i].length);
-
- bsc_entry->cm_reject_cause = cr_filter[i].bsc_cm_reject_cause;
- bsc_entry->lu_reject_cause = cr_filter[i].bsc_lu_reject_cause;
- nat_entry->cm_reject_cause = cr_filter[i].nat_cm_reject_cause;
- nat_entry->lu_reject_cause = cr_filter[i].nat_lu_reject_cause;
-
- if (gsm_parse_reg(nat_entry, &nat_entry->imsi_deny_re, &nat_entry->imsi_deny,
- cr_filter[i].nat_imsi_deny ? 1 : 0,
- &cr_filter[i].nat_imsi_deny) != 0)
- abort();
- if (gsm_parse_reg(bsc_entry, &bsc_entry->imsi_allow_re, &bsc_entry->imsi_allow,
- cr_filter[i].bsc_imsi_allow ? 1 : 0,
- &cr_filter[i].bsc_imsi_allow) != 0)
- abort();
- if (gsm_parse_reg(bsc_entry, &bsc_entry->imsi_deny_re, &bsc_entry->imsi_deny,
- cr_filter[i].bsc_imsi_deny ? 1 : 0,
- &cr_filter[i].bsc_imsi_deny) != 0)
- abort();
-
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Failed to parse the message\n");
- abort();
- }
-
- memset(&cause, 0, sizeof(cause));
- res = bsc_nat_filter_sccp_cr(bsc, msg, parsed, &contype, &imsi, &cause);
- if (res != cr_filter[i].result) {
- printf("FAIL: Wrong result %d for test %d.\n", res, i);
- abort();
- }
-
-
- OSMO_ASSERT(cause.cm_reject_cause == cr_filter[i].want_cm_reject_cause);
- OSMO_ASSERT(cause.lu_reject_cause == cr_filter[i].want_lu_reject_cause);
-
- if (contype != cr_filter[i].contype) {
- printf("FAIL: Wrong contype %d for test %d.\n", res, contype);
- abort();
- }
-
- talloc_steal(parsed, imsi);
- talloc_free(parsed);
- }
-
- msgb_free(msg);
- bsc_nat_free(nat);
-}
-
-static void test_dt_filter()
-{
- int i;
- struct msgb *msg = msgb_alloc(4096, "test_dt_filter");
- struct bsc_nat_parsed *parsed;
- struct bsc_filter_reject_cause cause;
-
- struct bsc_nat *nat = bsc_nat_alloc();
- struct bsc_connection *bsc = bsc_connection_alloc(nat);
- struct nat_sccp_connection *con = talloc_zero(0, struct nat_sccp_connection);
-
- bsc->cfg = bsc_config_alloc(nat, "foo", 0);
- bsc_config_add_lac(bsc->cfg, 23);
- con->bsc = bsc;
-
- msgb_reset(msg);
- copy_to_msg(msg, id_resp, ARRAY_SIZE(id_resp));
-
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp\n");
- abort();
- }
-
- if (parsed->bssap != BSSAP_MSG_DTAP) {
- printf("FAIL: It should be dtap\n");
- abort();
- }
-
- /* gsm_type is actually the size of the dtap */
- if (parsed->gsm_type < msgb_l3len(msg) - 3) {
- printf("FAIL: Not enough space for the content\n");
- abort();
- }
-
- memset(&cause, 0, sizeof(cause));
- OSMO_ASSERT(!con->filter_state.imsi);
- if (bsc_nat_filter_dt(bsc, msg, con, parsed, &cause) != 1) {
- printf("FAIL: Should have passed..\n");
- abort();
- }
- OSMO_ASSERT(con->filter_state.imsi);
- OSMO_ASSERT(talloc_parent(con->filter_state.imsi) == con);
-
- /* just some basic length checking... */
- for (i = ARRAY_SIZE(id_resp); i >= 0; --i) {
- msgb_reset(msg);
- copy_to_msg(msg, id_resp, ARRAY_SIZE(id_resp));
-
- parsed = bsc_nat_parse(msg);
- if (!parsed)
- continue;
-
- con->filter_state.imsi_checked = 0;
- memset(&cause, 0, sizeof(cause));
- bsc_nat_filter_dt(bsc, msg, con, parsed, &cause);
- }
-
- msgb_free(msg);
- bsc_nat_free(nat);
-}
-
-static void test_setup_rewrite()
-{
- struct msgb *msg = msgb_alloc(4096, "test_dt_filter");
- struct msgb *out;
- struct bsc_nat_parsed *parsed;
- const char *imsi = "27408000001234";
-
- struct bsc_nat *nat = bsc_nat_alloc();
-
- /* a fake list */
- struct osmo_config_list entries;
- struct osmo_config_entry entry;
-
- INIT_LLIST_HEAD(&entries.entry);
- entry.mcc = "274";
- entry.mnc = "08";
- entry.option = "^0([1-9])";
- entry.text = "0049";
- llist_add_tail(&entry.list, &entries.entry);
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries);
-
- /* verify that nothing changed */
- msgb_reset(msg);
- copy_to_msg(msg, cc_setup_international, ARRAY_SIZE(cc_setup_international));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (msg != out) {
- printf("FAIL: The message should not have been changed\n");
- abort();
- }
-
- verify_msg(out, cc_setup_international, ARRAY_SIZE(cc_setup_international));
- talloc_free(parsed);
-
- /* verify that something in the message changes */
- msgb_reset(msg);
- copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (!out) {
- printf("FAIL: A new message should be created.\n");
- abort();
- }
-
- if (msg == out) {
- printf("FAIL: The message should have changed\n");
- abort();
- }
-
- verify_msg(out, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched));
- msgb_free(out);
-
- /* Make sure that a wildcard is matching */
- entry.mnc = "*";
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries);
- msg = msgb_alloc(4096, "test_dt_filter");
- copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (!out) {
- printf("FAIL: A new message should be created.\n");
- abort();
- }
-
- if (msg == out) {
- printf("FAIL: The message should have changed\n");
- abort();
- }
-
- verify_msg(out, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched));
- msgb_free(out);
-
- /* Make sure that a wildcard is matching */
- entry.mnc = "09";
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries);
- msg = msgb_alloc(4096, "test_dt_filter");
- copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (out != msg) {
- printf("FAIL: The message should be unchanged.\n");
- abort();
- }
-
- verify_msg(out, cc_setup_national, ARRAY_SIZE(cc_setup_national));
- msgb_free(out);
-
- /* Now see what happens to an international number */
- entry.mnc = "*";
- entry.option = "^\\+[0-9][0-9]([1-9])";
- entry.text = "0036";
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries);
- msg = msgb_alloc(4096, "test_dt_filter");
- copy_to_msg(msg, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp %d\n", __LINE__);
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (!out) {
- printf("FAIL: A new message should be created %d.\n", __LINE__);
- abort();
- }
-
- if (msg == out) {
- printf("FAIL: The message should have changed %d\n", __LINE__);
- abort();
- }
-
- verify_msg(out, cc_setup_national_patched_patched,
- ARRAY_SIZE(cc_setup_national_patched_patched));
- msgb_free(out);
-
- /* go from international back to national */
- entry.mnc = "*";
- entry.option = "^\\+([0-9])";
- entry.text = "36";
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries);
- msg = msgb_alloc(4096, "test_dt_filter");
- copy_to_msg(msg, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp %d\n", __LINE__);
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (!out) {
- printf("FAIL: A new message should be created %d.\n", __LINE__);
- abort();
- }
-
- if (msg == out) {
- printf("FAIL: The message should have changed %d\n", __LINE__);
- abort();
- }
-
- verify_msg(out, cc_setup_national_again,
- ARRAY_SIZE(cc_setup_national_again));
- msgb_free(out);
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, NULL);
- bsc_nat_free(nat);
-}
-
-static void test_setup_rewrite_prefix(void)
-{
- struct msgb *msg = msgb_alloc(4096, "test_dt_filter");
- struct msgb *out;
- struct bsc_nat_parsed *parsed;
- const char *imsi = "27408000001234";
-
- struct bsc_nat *nat = bsc_nat_alloc();
-
- /* a fake list */
- struct osmo_config_list entries;
- struct osmo_config_entry entry;
-
- INIT_LLIST_HEAD(&entries.entry);
- entry.mcc = "274";
- entry.mnc = "08";
- entry.option = "^0([1-9])";
- entry.text = "prefix_lookup";
- llist_add_tail(&entry.list, &entries.entry);
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries);
-
- nat->num_rewr_trie = nat_rewrite_parse(nat, "prefixes.csv");
-
- msgb_reset(msg);
- copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (!out) {
- printf("FAIL: A new message should be created.\n");
- abort();
- }
-
- if (msg == out) {
- printf("FAIL: The message should have changed\n");
- abort();
- }
-
- verify_msg(out, cc_setup_national_patched, ARRAY_SIZE(cc_setup_national_patched));
- msgb_free(out);
-
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, NULL);
- bsc_nat_free(nat);
-}
-
-static void test_setup_rewrite_post(void)
-{
- struct msgb *msg = msgb_alloc(4096, "test_dt_filter");
- struct msgb *out;
- struct bsc_nat_parsed *parsed;
- const char *imsi = "27408000001234";
-
- struct bsc_nat *nat = bsc_nat_alloc();
-
- /* a fake list */
- struct osmo_config_list entries;
- struct osmo_config_entry entry;
- struct osmo_config_list entries_post;
- struct osmo_config_entry entry_post;
-
- INIT_LLIST_HEAD(&entries.entry);
- entry.mcc = "274";
- entry.mnc = "08";
- entry.option = "^0([1-9])";
- entry.text = "0049";
- llist_add_tail(&entry.list, &entries.entry);
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr, &entries);
-
- /* attempt to undo the previous one */
- INIT_LLIST_HEAD(&entries_post.entry);
- entry_post.mcc = "274";
- entry_post.mnc = "08";
- entry_post.option = "^\\+49([1-9])";
- entry_post.text = "prefix_lookup";
- llist_add_tail(&entry_post.list, &entries_post.entry);
- bsc_nat_num_rewr_entry_adapt(nat, &nat->num_rewr_post, &entries_post);
-
- nat->num_rewr_trie = nat_rewrite_parse(nat, "prefixes.csv");
-
- msgb_reset(msg);
- copy_to_msg(msg, cc_setup_national, ARRAY_SIZE(cc_setup_national));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse ID resp\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (!out) {
- printf("FAIL: A new message should be created.\n");
- abort();
- }
-
- if (msg == out) {
- printf("FAIL: The message should have changed\n");
- abort();
- }
-
- verify_msg(out, cc_setup_national, ARRAY_SIZE(cc_setup_national));
- msgb_free(out);
-
- bsc_nat_free(nat);
-}
-
-static void test_sms_smsc_rewrite()
-{
- struct msgb *msg = msgb_alloc(4096, "SMSC rewrite"), *out;
- struct bsc_nat_parsed *parsed;
- const char *imsi = "515039900406700";
-
- struct bsc_nat *nat = bsc_nat_alloc();
-
- /* a fake list */
- struct osmo_config_list smsc_entries, dest_entries, clear_entries;
- struct osmo_config_entry smsc_entry, dest_entry, clear_entry;
-
- INIT_LLIST_HEAD(&smsc_entries.entry);
- INIT_LLIST_HEAD(&dest_entries.entry);
- INIT_LLIST_HEAD(&clear_entries.entry);
- smsc_entry.mcc = "^515039";
- smsc_entry.option = "639180000105()";
- smsc_entry.text = "6666666666667";
- llist_add_tail(&smsc_entry.list, &smsc_entries.entry);
- dest_entry.mcc = "515";
- dest_entry.mnc = "03";
- dest_entry.option = "^0049";
- dest_entry.text = "";
- llist_add_tail(&dest_entry.list, &dest_entries.entry);
- clear_entry.mcc = "^515039";
- clear_entry.option = "^0049";
- clear_entry.text = "";
- llist_add_tail(&clear_entry.list, &clear_entries.entry);
-
- bsc_nat_num_rewr_entry_adapt(nat, &nat->smsc_rewr, &smsc_entries);
- bsc_nat_num_rewr_entry_adapt(nat, &nat->tpdest_match, &dest_entries);
- bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_clear_tp_srr, &clear_entries);
-
- printf("Testing SMSC rewriting.\n");
-
- /*
- * Check if the SMSC address is changed
- */
- copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse SMS\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (out == msg) {
- printf("FAIL: This should have changed.\n");
- abort();
- }
-
- verify_msg(out, smsc_rewrite_patched, ARRAY_SIZE(smsc_rewrite_patched));
- msgb_free(out);
-
- /* clear out the filter for SMSC */
- printf("Attempting to only rewrite the HDR\n");
- bsc_nat_num_rewr_entry_adapt(nat, &nat->smsc_rewr, NULL);
- msg = msgb_alloc(4096, "SMSC rewrite");
- copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse SMS\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (out == msg) {
- printf("FAIL: This should have changed.\n");
- abort();
- }
-
- verify_msg(out, smsc_rewrite_patched_hdr, ARRAY_SIZE(smsc_rewrite_patched_hdr));
- msgb_free(out);
-
- /* clear out the next filter */
- printf("Attempting to change nothing.\n");
- bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_clear_tp_srr, NULL);
- msg = msgb_alloc(4096, "SMSC rewrite");
- copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse SMS\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (out != msg) {
- printf("FAIL: This should not have changed.\n");
- abort();
- }
-
- verify_msg(out, smsc_rewrite, ARRAY_SIZE(smsc_rewrite));
- msgb_free(out);
- bsc_nat_free(nat);
-}
-
-static void test_sms_number_rewrite(void)
-{
- struct msgb *msg, *out;
- struct bsc_nat_parsed *parsed;
- const char *imsi = "515039900406700";
-
- struct bsc_nat *nat = bsc_nat_alloc();
-
- /* a fake list */
- struct osmo_config_list num_entries, clear_entries;
- struct osmo_config_entry num_entry, clear_entry;
-
- INIT_LLIST_HEAD(&num_entries.entry);
- num_entry.mcc = "^515039";
- num_entry.option = "^0049()";
- num_entry.text = "0032";
- llist_add_tail(&num_entry.list, &num_entries.entry);
-
- bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_num_rewr, &num_entries);
-
- printf("Testing SMS TP-DA rewriting.\n");
-
- /*
- * Check if the SMSC address is changed
- */
- msg = msgb_alloc(4096, "SMSC rewrite");
- copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse SMS\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (out == msg) {
- printf("FAIL: This should have changed.\n");
- abort();
- }
-
- verify_msg(out, smsc_rewrite_num_patched,
- ARRAY_SIZE(smsc_rewrite_num_patched));
- msgb_free(out);
-
- /*
- * Now with TP-SRR rewriting enabled
- */
- INIT_LLIST_HEAD(&clear_entries.entry);
- clear_entry.mcc = "^515039";
- clear_entry.option = "";
- clear_entry.text = "";
- llist_add_tail(&clear_entry.list, &clear_entries.entry);
- bsc_nat_num_rewr_entry_adapt(nat, &nat->sms_clear_tp_srr, &clear_entries);
-
- msg = msgb_alloc(4096, "SMSC rewrite");
- copy_to_msg(msg, smsc_rewrite, ARRAY_SIZE(smsc_rewrite));
- parsed = bsc_nat_parse(msg);
- if (!parsed) {
- printf("FAIL: Could not parse SMS\n");
- abort();
- }
-
- out = bsc_nat_rewrite_msg(nat, msg, parsed, imsi);
- if (out == msg) {
- printf("FAIL: This should have changed.\n");
- abort();
- }
-
- verify_msg(out, smsc_rewrite_num_patched_tp_srr,
- ARRAY_SIZE(smsc_rewrite_num_patched_tp_srr));
- msgb_free(out);
- bsc_nat_free(nat);
-}
-
-static void test_barr_list_parsing(void)
-{
- int rc;
- int cm, lu;
- struct rb_node *node;
- struct rb_root root = RB_ROOT;
- struct osmo_config_list *lst = osmo_config_list_parse(NULL, "barr.cfg");
- if (lst == NULL)
- abort();
-
- rc = bsc_filter_barr_adapt(NULL, &root, lst);
- if (rc != 0)
- abort();
- talloc_free(lst);
-
-
- for (node = rb_first(&root); node; node = rb_next(node)) {
- struct bsc_filter_barr_entry *entry;
- entry = rb_entry(node, struct bsc_filter_barr_entry, node);
- printf("IMSI: %s CM: %d LU: %d\n", entry->imsi,
- entry->cm_reject_cause, entry->lu_reject_cause);
- }
-
- /* do the look up now.. */
- rc = bsc_filter_barr_find(&root, "12123119", &cm, &lu);
- if (!rc) {
- printf("Failed to find the IMSI.\n");
- abort();
- }
-
- if (cm != 3 || lu != 4) {
- printf("Found CM(%d) and LU(%d)\n", cm, lu);
- abort();
- }
-
- /* empty and check that it is empty */
- bsc_filter_barr_adapt(NULL, &root, NULL);
- if (!RB_EMPTY_ROOT(&root)) {
- printf("Failed to empty the list.\n");
- abort();
- }
-
- /* check that dup results in an error */
- lst = osmo_config_list_parse(NULL, "barr_dup.cfg");
- if (lst == NULL) {
- printf("Failed to parse list with dups\n");
- abort();
- }
-
- rc = bsc_filter_barr_adapt(NULL, &root, lst);
- if (rc != -1) {
- printf("It should have failed due dup\n");
- abort();
- }
- talloc_free(lst);
-
- /* dump for reference */
- for (node = rb_first(&root); node; node = rb_next(node)) {
- struct bsc_filter_barr_entry *entry;
- entry = rb_entry(node, struct bsc_filter_barr_entry, node);
- printf("IMSI: %s CM: %d LU: %d\n", entry->imsi,
- entry->cm_reject_cause, entry->lu_reject_cause);
-
- }
- rc = bsc_filter_barr_adapt(NULL, &root, NULL);
-}
-
-static void test_nat_extract_lac()
-{
- int res;
- struct bsc_connection *bsc;
- struct bsc_nat *nat;
- struct nat_sccp_connection con;
- struct bsc_nat_parsed *parsed;
- struct msgb *msg = msgb_alloc(4096, "test-message");
-
- printf("Testing LAC extraction from SCCP CR\n");
-
- /* initialize the testcase */
- nat = bsc_nat_alloc();
- bsc = bsc_connection_alloc(nat);
- bsc->cfg = bsc_config_alloc(nat, "foo", 0);
-
- memset(&con, 0, sizeof(con));
- con.bsc = bsc;
-
- /* create the SCCP CR */
- msg->l2h = msgb_put(msg, ARRAY_SIZE(bssmap_cr));
- memcpy(msg->l2h, bssmap_cr, ARRAY_SIZE(bssmap_cr));
-
- /* parse it and pass it on */
- parsed = bsc_nat_parse(msg);
- res = bsc_nat_extract_lac(bsc, &con, parsed, msg);
- OSMO_ASSERT(res == 0);
-
- /* verify the LAC */
- OSMO_ASSERT(con.lac == 8210);
- OSMO_ASSERT(con.ci == 50000);
-
- bsc_nat_free(nat);
-}
-
-int main(int argc, char **argv)
-{
- msgb_talloc_ctx_init(NULL, 0);
- sccp_set_log_area(DSCCP);
- osmo_init_logging(&log_info);
-
- test_filter();
- test_contrack();
- test_paging();
- test_mgcp_ass_tracking();
- test_mgcp_find();
- test_mgcp_rewrite();
- test_mgcp_parse();
- test_cr_filter();
- test_dt_filter();
- test_setup_rewrite();
- test_setup_rewrite_prefix();
- test_setup_rewrite_post();
- test_sms_smsc_rewrite();
- test_sms_number_rewrite();
- test_mgcp_allocations();
- test_barr_list_parsing();
- test_nat_extract_lac();
-
- printf("Testing execution completed.\n");
- return 0;
-}
-
-/* stub */
-void bsc_nat_send_mgcp_to_msc(struct bsc_nat *nat, struct msgb *msg)
-{
- abort();
-}
diff --git a/tests/bsc-nat/bsc_nat_test.ok b/tests/bsc-nat/bsc_nat_test.ok
deleted file mode 100644
index ab04f4273..000000000
--- a/tests/bsc-nat/bsc_nat_test.ok
+++ /dev/null
@@ -1,39 +0,0 @@
-Testing BSS Filtering.
-Going to test item: 0
-Going to test item: 1
-Going to test item: 2
-Going to test item: 3
-Going to test item: 4
-Going to test item: 5
-Going to test item: 6
-Going to test item: 7
-Going to test item: 8
-Going to test item: 9
-Going to test item: 10
-Going to test item: 11
-Going to test item: 12
-Testing connection tracking.
-Testing paging by lac.
-Testing MGCP.
-Testing finding of a BSC Connection
-Testing rewriting MGCP messages.
-Testing MGCP response parsing.
-Testing SMSC rewriting.
-Attempting to only rewrite the HDR
-Attempting to change nothing.
-Testing SMS TP-DA rewriting.
-IMSI: 12123115 CM: 3 LU: 4
-IMSI: 12123116 CM: 3 LU: 4
-IMSI: 12123117 CM: 3 LU: 4
-IMSI: 12123118 CM: 3 LU: 4
-IMSI: 12123119 CM: 3 LU: 4
-IMSI: 12123120 CM: 3 LU: 4
-IMSI: 12123123 CM: 3 LU: 1
-IMSI: 12123124 CM: 3 LU: 2
-IMSI: 12123125 CM: 3 LU: 3
-IMSI: 12123126 CM: 3 LU: 4
-IMSI: 12123127 CM: 3 LU: 5
-IMSI: 12123128 CM: 3 LU: 6
-IMSI: 12123124 CM: 3 LU: 2
-Testing LAC extraction from SCCP CR
-Testing execution completed.
diff --git a/tests/bsc-nat/prefixes.csv b/tests/bsc-nat/prefixes.csv
deleted file mode 100644
index 0c7660f10..000000000
--- a/tests/bsc-nat/prefixes.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-0172,0049
-+49,0
diff --git a/tests/bsc/Makefile.am b/tests/bsc/Makefile.am
deleted file mode 100644
index 904bdfcd7..000000000
--- a/tests/bsc/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOSCCP_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(NULL)
-
-AM_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- bsc_test.ok \
- $(NULL)
-
-noinst_PROGRAMS = \
- bsc_test \
- $(NULL)
-
-bsc_test_SOURCES = \
- bsc_test.c \
- $(top_srcdir)/src/osmo-bsc/osmo_bsc_filter.c \
- $(NULL)
-
-bsc_test_LDADD = \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libcommon-cs/libcommon-cs.a \
- $(top_builddir)/src/libmgcp/libmgcp.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBOSMOSCCP_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- -lrt \
- $(NULL)
diff --git a/tests/bsc/bsc_test.c b/tests/bsc/bsc_test.c
deleted file mode 100644
index 20ed5b43b..000000000
--- a/tests/bsc/bsc_test.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * BSC Message filtering
- *
- * (C) 2013 by sysmocom s.f.m.c. GmbH
- * Written by Jacob Erlbeck <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 f6869691c..000000000
--- a/tests/channel/channel_test.c
+++ /dev/null
@@ -1,90 +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_dyn_ts_subslots(void)
-{
- struct gsm_bts_trx_ts ts;
-
- printf("Testing subslot numbers for pchan types\n");
-
- ts.pchan = GSM_PCHAN_TCH_F;
- OSMO_ASSERT(ts_subslots(&ts) == 1);
-
- ts.pchan = GSM_PCHAN_TCH_H;
- OSMO_ASSERT(ts_subslots(&ts) == 2);
-
- ts.pchan = GSM_PCHAN_PDCH;
- OSMO_ASSERT(ts_subslots(&ts) == 0);
-
- ts.pchan = GSM_PCHAN_TCH_F_PDCH;
- ts.flags = 0; /* TCH_F mode */
- OSMO_ASSERT(ts_subslots(&ts) == 1);
- ts.flags = TS_F_PDCH_ACTIVE;
- OSMO_ASSERT(ts_subslots(&ts) == 0);
-
- ts.pchan = GSM_PCHAN_TCH_F_TCH_H_PDCH;
- ts.dyn.pchan_is = GSM_PCHAN_TCH_F;
- OSMO_ASSERT(ts_subslots(&ts) == 1);
- ts.dyn.pchan_is = GSM_PCHAN_TCH_H;
- OSMO_ASSERT(ts_subslots(&ts) == 2);
- ts.dyn.pchan_is = GSM_PCHAN_PDCH;
- OSMO_ASSERT(ts_subslots(&ts) == 0);
-}
-
-int main(int argc, char **argv)
-{
- osmo_init_logging(&log_info);
-
- test_dyn_ts_subslots();
-
- return EXIT_SUCCESS;
-}
-
-void _abis_nm_sendmsg() {}
-void sms_alloc() {}
-void sms_free() {}
-void gsm_net_update_ctype(struct gsm_network *network) {}
-void gsm48_secure_channel() {}
-void paging_request_stop() {}
-void vty_out() {}
-
-void ipa_client_conn_clear_queue() {}
-void ipa_client_conn_close() {}
-void ipa_client_conn_create() {}
-void ipa_client_conn_destroy() {}
-void ipa_client_conn_open() {}
-void ipa_client_conn_send() {}
-void ipa_msg_push_header() {}
-void ipaccess_bts_handle_ccm() {}
-
-struct tlv_definition nm_att_tlvdef;
diff --git a/tests/channel/channel_test.ok b/tests/channel/channel_test.ok
deleted file mode 100644
index e4d625a65..000000000
--- a/tests/channel/channel_test.ok
+++ /dev/null
@@ -1 +0,0 @@
-Testing subslot numbers for pchan types
diff --git a/tests/db/Makefile.am b/tests/db/Makefile.am
deleted file mode 100644
index bcb66ec32..000000000
--- a/tests/db/Makefile.am
+++ /dev/null
@@ -1,47 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(LIBSMPP34_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(NULL)
-
-AM_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- db_test.ok \
- db_test.err \
- hlr.sqlite3 \
- $(NULL)
-
-noinst_PROGRAMS = \
- db_test \
- $(NULL)
-
-db_test_SOURCES = \
- db_test.c \
- $(NULL)
-
-db_test_LDADD = \
- $(top_builddir)/src/libmsc/libmsc.a \
- $(top_builddir)/src/libcommon-cs/libcommon-cs.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(top_builddir)/tests/libiudummy/libiudummy.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBSMPP34_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBCRYPTO_LIBS) \
- -ldbi \
- $(NULL)
diff --git a/tests/db/db_test.c b/tests/db/db_test.c
deleted file mode 100644
index a0c1e79c3..000000000
--- a/tests/db/db_test.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/* (C) 2008 by Jan Luebbe <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 fa9a54c09..000000000
--- a/tests/db/db_test.err
+++ /dev/null
@@ -1,2 +0,0 @@
-Going to migrate from revision 3
- \ No newline at end of file
diff --git a/tests/db/db_test.ok b/tests/db/db_test.ok
deleted file mode 100644
index 2632a8c8a..000000000
--- a/tests/db/db_test.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-Testing subscriber database code.
-DB: Database initialized.
-DB: Database prepared.
-Done
diff --git a/tests/db/hlr.sqlite3 b/tests/db/hlr.sqlite3
deleted file mode 100644
index e59dcdca3..000000000
--- a/tests/db/hlr.sqlite3
+++ /dev/null
Binary files differ
diff --git a/tests/gsm0408/Makefile.am b/tests/gsm0408/Makefile.am
deleted file mode 100644
index ae81c2c7c..000000000
--- a/tests/gsm0408/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(NULL)
-
-noinst_PROGRAMS = \
- gsm0408_test \
- $(NULL)
-
-EXTRA_DIST = \
- gsm0408_test.ok \
- $(NULL)
-
-gsm0408_test_SOURCES = \
- gsm0408_test.c \
- $(NULL)
-
-gsm0408_test_LDADD = \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libcommon-cs/libcommon-cs.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- -ldbi \
- $(NULL)
diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c
deleted file mode 100644
index 1b326ee54..000000000
--- a/tests/gsm0408/gsm0408_test.c
+++ /dev/null
@@ -1,697 +0,0 @@
-/* simple test for the gsm0408 formatting functions */
-/*
- * (C) 2008 by Holger Hans Peter Freyther <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);
-
- _bts_uarfcn_add(bts, 10564, 319, 0);
- _bts_uarfcn_add(bts, 10612, 319, 0);
- gen(bts, __func__);
-}
-
-static inline void test_si2q_mu(void)
-{
- struct gsm_bts *bts;
- struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, NULL);
- printf("Test SI2quater multiple UARFCNs:\n");
-
- if (!network)
- exit(1);
- bts = gsm_bts_alloc(network);
-
- _bts_uarfcn_add(bts, 10564, 318, 0);
- _bts_uarfcn_add(bts, 10612, 319, 0);
- _bts_uarfcn_add(bts, 10612, 31, 0);
- _bts_uarfcn_add(bts, 10612, 19, 0);
- _bts_uarfcn_add(bts, 10613, 64, 0);
- _bts_uarfcn_add(bts, 10613, 164, 0);
- _bts_uarfcn_add(bts, 10613, 14, 0);
-}
-
-static inline void test_si2q_u(void)
-{
- struct gsm_bts *bts;
- struct gsm_network *network = bsc_network_init(NULL, 1, 1, NULL);
- printf("Testing SYSINFO_TYPE_2quater UARFCN generation:\n");
-
- if (!network)
- exit(1);
-
- bts = gsm_bts_alloc(network);
-
- /* first generate invalid SI as no UARFCN added */
- gen(bts, __func__);
-
- /* subsequent calls should produce valid SI if there's enough memory */
- _bts_uarfcn_add(bts, 1982, 13, 1);
- _bts_uarfcn_add(bts, 1982, 44, 0);
- _bts_uarfcn_add(bts, 1982, 61, 1);
- _bts_uarfcn_add(bts, 1982, 89, 1);
- _bts_uarfcn_add(bts, 1982, 113, 0);
- _bts_uarfcn_add(bts, 1982, 123, 0);
- _bts_uarfcn_add(bts, 1982, 56, 1);
- _bts_uarfcn_add(bts, 1982, 72, 1);
- _bts_uarfcn_add(bts, 1982, 223, 1);
- _bts_uarfcn_add(bts, 1982, 14, 0);
- _bts_uarfcn_add(bts, 1982, 88, 0);
-}
-
-static inline void test_si2q_e(void)
-{
- struct gsm_bts *bts;
- struct gsm_network *network = bsc_network_init(NULL, 1, 1, NULL);
- printf("Testing SYSINFO_TYPE_2quater EARFCN generation:\n");
-
- if (!network)
- exit(1);
-
- bts = gsm_bts_alloc(network);
-
- bts->si_common.si2quater_neigh_list.arfcn = bts->si_common.data.earfcn_list;
- bts->si_common.si2quater_neigh_list.meas_bw = bts->si_common.data.meas_bw_list;
- bts->si_common.si2quater_neigh_list.length = MAX_EARFCN_LIST;
- bts->si_common.si2quater_neigh_list.thresh_hi = 5;
-
- osmo_earfcn_init(&bts->si_common.si2quater_neigh_list);
-
- /* first generate invalid SI as no EARFCN added */
- gen(bts, __func__);
-
- /* subsequent calls should produce valid SI if there's enough memory and EARFCNs */
- add_earfcn_b(bts, 1917, 5);
- del_earfcn_b(bts, 1917);
- add_earfcn_b(bts, 1917, 1);
- add_earfcn_b(bts, 1932, OSMO_EARFCN_MEAS_INVALID);
- add_earfcn_b(bts, 1937, 2);
- add_earfcn_b(bts, 1945, OSMO_EARFCN_MEAS_INVALID);
- add_earfcn_b(bts, 1965, OSMO_EARFCN_MEAS_INVALID);
- add_earfcn_b(bts, 1967, 4);
- add_earfcn_b(bts, 1982, 3);
-}
-
-static inline void test_si2q_long(void)
-{
- struct gsm_bts *bts;
- struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, NULL);
- printf("Testing SYSINFO_TYPE_2quater combined EARFCN & UARFCN generation:\n");
-
- if (!network)
- exit(1);
-
- bts = gsm_bts_alloc(network);
-
- bts->si_common.si2quater_neigh_list.arfcn = bts->si_common.data.earfcn_list;
- bts->si_common.si2quater_neigh_list.meas_bw = bts->si_common.data.meas_bw_list;
- bts->si_common.si2quater_neigh_list.length = MAX_EARFCN_LIST;
- bts->si_common.si2quater_neigh_list.thresh_hi = 5;
-
- osmo_earfcn_init(&bts->si_common.si2quater_neigh_list);
-
- bts_earfcn_add(bts, 1922, 11, 22, 8,32, 8);
- bts_earfcn_add(bts, 1922, 11, 22, 8, 32, 8);
- bts_earfcn_add(bts, 1924, 11, 12, 6, 11, 5);
- bts_earfcn_add(bts, 1923, 11, 12, 6, 11, 5);
- bts_earfcn_add(bts, 1925, 11, 12, 6, 11, 5);
- bts_earfcn_add(bts, 2111, 11, 12, 6, 11, 5);
- bts_earfcn_add(bts, 2112, 11, 12, 6, 11, 4);
- bts_earfcn_add(bts, 2113, 11, 12, 6, 11, 3);
- bts_earfcn_add(bts, 2114, 11, 12, 6, 11, 2);
- bts_earfcn_add(bts, 2131, 11, 12, 6, 11, 5);
- bts_earfcn_add(bts, 2132, 11, 12, 6, 11, 4);
- bts_earfcn_add(bts, 2133, 11, 12, 6, 11, 3);
- bts_earfcn_add(bts, 2134, 11, 12, 6, 11, 2);
- bts_earfcn_add(bts, 2121, 11, 12, 6, 11, 5);
- bts_earfcn_add(bts, 2122, 11, 12, 6, 11, 4);
- bts_earfcn_add(bts, 2123, 11, 12, 6, 11, 3);
- bts_earfcn_add(bts, 2124, 11, 12, 6, 11, 2);
- _bts_uarfcn_add(bts, 1976, 13, 1);
- _bts_uarfcn_add(bts, 1976, 38, 1);
- _bts_uarfcn_add(bts, 1976, 44, 1);
- _bts_uarfcn_add(bts, 1976, 120, 1);
- _bts_uarfcn_add(bts, 1976, 140, 1);
- _bts_uarfcn_add(bts, 1976, 163, 1);
- _bts_uarfcn_add(bts, 1976, 166, 1);
- _bts_uarfcn_add(bts, 1976, 217, 1);
- _bts_uarfcn_add(bts, 1976, 224, 1);
- _bts_uarfcn_add(bts, 1976, 225, 1);
- _bts_uarfcn_add(bts, 1976, 226, 1);
-}
-
-static void test_mi_functionality(void)
-{
- const char *imsi_odd = "987654321098763";
- const char *imsi_even = "9876543210987654";
- const uint32_t tmsi = 0xfabeacd0;
- uint8_t mi[128];
- unsigned int mi_len;
- char mi_parsed[GSM48_MI_SIZE];
-
- printf("Testing parsing and generating TMSI/IMSI\n");
-
- /* tmsi code */
- mi_len = gsm48_generate_mid_from_tmsi(mi, tmsi);
- gsm48_mi_to_string(mi_parsed, sizeof(mi_parsed), mi + 2, mi_len - 2);
- COMPARE((uint32_t)strtoul(mi_parsed, NULL, 10), ==, tmsi);
-
- /* imsi code */
- mi_len = gsm48_generate_mid_from_imsi(mi, imsi_odd);
- gsm48_mi_to_string(mi_parsed, sizeof(mi_parsed), mi + 2, mi_len -2);
- printf("hex: %s\n", osmo_hexdump(mi, mi_len));
- COMPARE_STR(mi_parsed, imsi_odd);
-
- mi_len = gsm48_generate_mid_from_imsi(mi, imsi_even);
- gsm48_mi_to_string(mi_parsed, sizeof(mi_parsed), mi + 2, mi_len -2);
- printf("hex: %s\n", osmo_hexdump(mi, mi_len));
- COMPARE_STR(mi_parsed, imsi_even);
-}
-
-struct {
- int range;
- int arfcns_num;
- int arfcns[RANGE_ENC_MAX_ARFCNS];
-} arfcn_test_ranges[] = {
- {ARFCN_RANGE_512, 12,
- { 1, 12, 31, 51, 57, 91, 97, 98, 113, 117, 120, 125 }},
- {ARFCN_RANGE_512, 17,
- { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }},
- {ARFCN_RANGE_512, 18,
- { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 }},
- {ARFCN_RANGE_512, 18,
- { 1, 17, 31, 45, 58, 79, 81, 97,
- 113, 127, 213, 277, 287, 311, 331, 391,
- 417, 511 }},
- {ARFCN_RANGE_512, 6,
- { 1, 17, 31, 45, 58, 79 }},
- {ARFCN_RANGE_512, 6,
- { 10, 17, 31, 45, 58, 79 }},
- {ARFCN_RANGE_1024, 17,
- { 0, 17, 31, 45, 58, 79, 81, 97,
- 113, 127, 213, 277, 287, 311, 331, 391,
- 1023 }},
- {ARFCN_RANGE_1024, 16,
- { 17, 31, 45, 58, 79, 81, 97, 113,
- 127, 213, 277, 287, 311, 331, 391, 1023 }},
- {-1}
-};
-
-static int test_single_range_encoding(int range, const int *orig_arfcns,
- int arfcns_num, int silent)
-{
- int arfcns[RANGE_ENC_MAX_ARFCNS];
- int w[RANGE_ENC_MAX_ARFCNS];
- int f0_included = 0;
- int rc, f0;
- uint8_t chan_list[16] = {0};
- struct gsm_sysinfo_freq dec_freq[1024] = {{0}};
- int dec_arfcns[RANGE_ENC_MAX_ARFCNS] = {0};
- int dec_arfcns_count = 0;
- int arfcns_used = 0;
- int i;
-
- arfcns_used = arfcns_num;
- memmove(arfcns, orig_arfcns, sizeof(arfcns));
-
- f0 = range == ARFCN_RANGE_1024 ? 0 : arfcns[0];
- /*
- * Manipulate the ARFCN list according to the rules in J4 depending
- * on the selected range.
- */
- arfcns_used = range_enc_filter_arfcns(arfcns, arfcns_used,
- f0, &f0_included);
-
- memset(w, 0, sizeof(w));
- range_enc_arfcns(range, arfcns, arfcns_used, w, 0);
-
- if (!silent)
- fprintf(stderr, "range=%d, arfcns_used=%d, f0=%d, f0_included=%d\n",
- range, arfcns_used, f0, f0_included);
-
- /* Select the range and the amount of bits needed */
- switch (range) {
- case ARFCN_RANGE_128:
- range_enc_range128(chan_list, f0, w);
- break;
- case ARFCN_RANGE_256:
- range_enc_range256(chan_list, f0, w);
- break;
- case ARFCN_RANGE_512:
- range_enc_range512(chan_list, f0, w);
- break;
- case ARFCN_RANGE_1024:
- range_enc_range1024(chan_list, f0, f0_included, w);
- break;
- default:
- return 1;
- };
-
- if (!silent)
- printf("chan_list = %s\n",
- osmo_hexdump(chan_list, sizeof(chan_list)));
-
- rc = gsm48_decode_freq_list(dec_freq, chan_list, sizeof(chan_list),
- 0xfe, 1);
- if (rc != 0) {
- printf("Cannot decode freq list, rc = %d\n", rc);
- return 1;
- }
-
- for (i = 0; i < ARRAY_SIZE(dec_freq); i++) {
- if (dec_freq[i].mask &&
- dec_arfcns_count < ARRAY_SIZE(dec_arfcns))
- dec_arfcns[dec_arfcns_count++] = i;
- }
-
- if (!silent) {
- printf("Decoded freqs %d (expected %d)\n",
- dec_arfcns_count, arfcns_num);
- printf("Decoded: ");
- for (i = 0; i < dec_arfcns_count; i++) {
- printf("%d ", dec_arfcns[i]);
- if (dec_arfcns[i] != orig_arfcns[i])
- printf("(!= %d) ", orig_arfcns[i]);
- }
- printf("\n");
- }
-
- if (dec_arfcns_count != arfcns_num) {
- printf("Wrong number of arfcns\n");
- return 1;
- }
-
- if (memcmp(dec_arfcns, orig_arfcns, sizeof(dec_arfcns)) != 0) {
- printf("Decoding error, got wrong freqs\n");
- fprintf(stderr, " w = ");
- for (i = 0; i < ARRAY_SIZE(w); i++)
- fprintf(stderr, "%d ", w[i]);
- fprintf(stderr, "\n");
- return 1;
- }
-
- return 0;
-}
-
-static void test_random_range_encoding(int range, int max_arfcn_num)
-{
- int arfcns_num = 0;
- int test_idx;
- int rc, max_count;
- int num_tests = 1024;
-
- printf("Random range test: range %d, max num ARFCNs %d\n",
- range, max_arfcn_num);
-
- srandom(1);
-
- for (max_count = 1; max_count < max_arfcn_num; max_count++) {
- for (test_idx = 0; test_idx < num_tests; test_idx++) {
- int count;
- int i;
- int min_freq = 0;
-
- int rnd_arfcns[RANGE_ENC_MAX_ARFCNS] = {0};
- char rnd_arfcns_set[1024] = {0};
-
- if (range < ARFCN_RANGE_1024)
- min_freq = random() % (1023 - range);
-
- for (count = max_count; count; ) {
- int arfcn = min_freq + random() % (range + 1);
- OSMO_ASSERT(arfcn < ARRAY_SIZE(rnd_arfcns_set));
-
- if (!rnd_arfcns_set[arfcn]) {
- rnd_arfcns_set[arfcn] = 1;
- count -= 1;
- }
- }
-
- arfcns_num = 0;
- for (i = 0; i < ARRAY_SIZE(rnd_arfcns_set); i++)
- if (rnd_arfcns_set[i])
- rnd_arfcns[arfcns_num++] = i;
-
- rc = test_single_range_encoding(range, rnd_arfcns,
- arfcns_num, 1);
- if (rc != 0) {
- printf("Failed on test %d, range %d, num ARFCNs %d\n",
- test_idx, range, max_count);
- test_single_range_encoding(range, rnd_arfcns,
- arfcns_num, 0);
- return;
- }
- }
- }
-}
-
-static void test_range_encoding()
-{
- int *arfcns;
- int arfcns_num = 0;
- int test_idx;
- int range;
-
- for (test_idx = 0; arfcn_test_ranges[test_idx].arfcns_num > 0; test_idx++)
- {
- arfcns_num = arfcn_test_ranges[test_idx].arfcns_num;
- arfcns = &arfcn_test_ranges[test_idx].arfcns[0];
- range = arfcn_test_ranges[test_idx].range;
-
- printf("Range test %d: range %d, num ARFCNs %d\n",
- test_idx, range, arfcns_num);
-
- test_single_range_encoding(range, arfcns, arfcns_num, 0);
- }
-
- test_random_range_encoding(ARFCN_RANGE_128, 29);
- test_random_range_encoding(ARFCN_RANGE_256, 22);
- test_random_range_encoding(ARFCN_RANGE_512, 18);
- test_random_range_encoding(ARFCN_RANGE_1024, 16);
-}
-
-static int freqs1[] = {
- 12, 70, 121, 190, 250, 320, 401, 475, 520, 574, 634, 700, 764, 830, 905, 980
-};
-
-static int freqs2[] = {
- 402, 460, 1, 67, 131, 197, 272, 347,
-};
-
-static int freqs3[] = {
- 68, 128, 198, 279, 353, 398, 452,
-
-};
-
-static int w_out[] = {
- 122, 2, 69, 204, 75, 66, 60, 70, 83, 3, 24, 67, 54, 64, 70, 9,
-};
-
-static int range128[] = {
- 1, 1 + 127,
-};
-
-static int range256[] = {
- 1, 1 + 128,
-};
-
-static int range512[] = {
- 1, 1+ 511,
-};
-
-
-static void test_arfcn_filter()
-{
- int arfcns[50], i, res, f0_included;
- for (i = 0; i < ARRAY_SIZE(arfcns); ++i)
- arfcns[i] = (i + 1) * 2;
-
- /* check that the arfcn is taken out. f0_included is only set for Range1024 */
- f0_included = 24;
- res = range_enc_filter_arfcns(arfcns, ARRAY_SIZE(arfcns),
- arfcns[0], &f0_included);
- VERIFY(res, ==, ARRAY_SIZE(arfcns) - 1);
- VERIFY(f0_included, ==, 1);
- for (i = 0; i < res; ++i)
- VERIFY(arfcns[i], ==, ((i+2) * 2) - (2+1));
-
- /* check with range1024, ARFCN 0 is included */
- for (i = 0; i < ARRAY_SIZE(arfcns); ++i)
- arfcns[i] = i * 2;
- res = range_enc_filter_arfcns(arfcns, ARRAY_SIZE(arfcns),
- 0, &f0_included);
- VERIFY(res, ==, ARRAY_SIZE(arfcns) - 1);
- VERIFY(f0_included, ==, 1);
- for (i = 0; i < res; ++i)
- VERIFY(arfcns[i], ==, (i + 1) * 2 - 1);
-
- /* check with range1024, ARFCN 0 not included */
- for (i = 0; i < ARRAY_SIZE(arfcns); ++i)
- arfcns[i] = (i + 1) * 2;
- res = range_enc_filter_arfcns(arfcns, ARRAY_SIZE(arfcns),
- 0, &f0_included);
- VERIFY(res, ==, ARRAY_SIZE(arfcns));
- VERIFY(f0_included, ==, 0);
- for (i = 0; i < res; ++i)
- VERIFY(arfcns[i], ==, ((i + 1) * 2) - 1);
-}
-
-static void test_print_encoding()
-{
- int rc;
- int w[17];
- uint8_t chan_list[16];
- memset(chan_list, 0x23, sizeof(chan_list));
-
- for (rc = 0; rc < ARRAY_SIZE(w); ++rc)
- switch (rc % 3) {
- case 0:
- w[rc] = 0xAAAA;
- break;
- case 1:
- w[rc] = 0x5555;
- break;
- case 2:
- w[rc] = 0x9696;
- break;
- }
-
- range_enc_range512(chan_list, (1 << 9) | 0x96, w);
-
- printf("Range512: %s\n", osmo_hexdump(chan_list, ARRAY_SIZE(chan_list)));
-}
-
-static void test_si_range_helpers()
-{
- int ws[(sizeof(freqs1)/sizeof(freqs1[0]))];
- int i, f0 = 0xFFFFFF;
-
- memset(&ws[0], 0x23, sizeof(ws));
-
- i = range_enc_find_index(1023, freqs1, ARRAY_SIZE(freqs1));
- printf("Element is: %d => freqs[i] = %d\n", i, i >= 0 ? freqs1[i] : -1);
- VERIFY(i, ==, 2);
-
- i = range_enc_find_index(511, freqs2, ARRAY_SIZE(freqs2));
- printf("Element is: %d => freqs[i] = %d\n", i, i >= 0 ? freqs2[i] : -1);
- VERIFY(i, ==, 2);
-
- i = range_enc_find_index(511, freqs3, ARRAY_SIZE(freqs3));
- printf("Element is: %d => freqs[i] = %d\n", i, i >= 0 ? freqs3[i] : -1);
- VERIFY(i, ==, 0);
-
- range_enc_arfcns(1023, freqs1, ARRAY_SIZE(freqs1), ws, 0);
-
- for (i = 0; i < sizeof(freqs1)/sizeof(freqs1[0]); ++i) {
- printf("w[%d]=%d\n", i, ws[i]);
- VERIFY(ws[i], ==, w_out[i]);
- }
-
- i = range_enc_determine_range(range128, ARRAY_SIZE(range128), &f0);
- VERIFY(i, ==, ARFCN_RANGE_128);
- VERIFY(f0, ==, 1);
-
- i = range_enc_determine_range(range256, ARRAY_SIZE(range256), &f0);
- VERIFY(i, ==, ARFCN_RANGE_256);
- VERIFY(f0, ==, 1);
-
- i = range_enc_determine_range(range512, ARRAY_SIZE(range512), &f0);
- VERIFY(i, ==, ARFCN_RANGE_512);
- VERIFY(f0, ==, 1);
-}
-
-static void test_gsm411_rp_ref_wrap(void)
-{
- struct gsm_subscriber_connection conn;
- int res;
-
- printf("testing RP-Reference wrap\n");
-
- memset(&conn, 0, sizeof(conn));
- conn.next_rp_ref = 255;
-
- res = sms_next_rp_msg_ref(&conn.next_rp_ref);
- printf("Allocated reference: %d\n", res);
- OSMO_ASSERT(res == 255);
-
- res = sms_next_rp_msg_ref(&conn.next_rp_ref);
- printf("Allocated reference: %d\n", res);
- OSMO_ASSERT(res == 0);
-
- res = sms_next_rp_msg_ref(&conn.next_rp_ref);
- printf("Allocated reference: %d\n", res);
- OSMO_ASSERT(res == 1);
-}
-
-int main(int argc, char **argv)
-{
- osmo_init_logging(&log_info);
- log_set_log_level(osmo_stderr_target, LOGL_INFO);
-
- test_location_area_identifier();
- test_mi_functionality();
-
- test_si_range_helpers();
- test_arfcn_filter();
- test_print_encoding();
- test_range_encoding();
- test_gsm411_rp_ref_wrap();
-
- test_si2q_segfault();
- test_si2q_e();
- test_si2q_u();
- test_si2q_mu();
- test_si2q_long();
-
- printf("Done.\n");
-
- return EXIT_SUCCESS;
-}
diff --git a/tests/gsm0408/gsm0408_test.ok b/tests/gsm0408/gsm0408_test.ok
deleted file mode 100644
index d30f42155..000000000
--- a/tests/gsm0408/gsm0408_test.ok
+++ /dev/null
@@ -1,204 +0,0 @@
-Testing test location area identifier
-Testing parsing and generating TMSI/IMSI
-hex: 17 08 99 78 56 34 12 90 78 36
-hex: 17 09 91 78 56 34 12 90 78 56 f4
-Element is: 2 => freqs[i] = 121
-Element is: 2 => freqs[i] = 1
-Element is: 0 => freqs[i] = 68
-w[0]=122
-w[1]=2
-w[2]=69
-w[3]=204
-w[4]=75
-w[5]=66
-w[6]=60
-w[7]=70
-w[8]=83
-w[9]=3
-w[10]=24
-w[11]=67
-w[12]=54
-w[13]=64
-w[14]=70
-w[15]=9
-Range512: 89 4b 2a 95 65 95 55 2c a9 55 aa 55 6a 95 59 55
-Range test 0: range 511, num ARFCNs 12
-chan_list = 88 00 98 34 85 36 7c 50 22 dc 5e ec 00 00 00 00
-Decoded freqs 12 (expected 12)
-Decoded: 1 12 31 51 57 91 97 98 113 117 120 125
-Range test 1: range 511, num ARFCNs 17
-chan_list = 88 00 82 7f 01 3f 7e 04 0b ff ff fc 10 41 07 e0
-Decoded freqs 17 (expected 17)
-Decoded: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
-Range test 2: range 511, num ARFCNs 18
-chan_list = 88 00 82 7f 01 7f 7e 04 0b ff ff fc 10 41 07 ff
-Decoded freqs 18 (expected 18)
-Decoded: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
-Range test 3: range 511, num ARFCNs 18
-chan_list = 88 00 94 3a 44 32 d7 2a 43 2a 13 94 e5 38 39 f6
-Decoded freqs 18 (expected 18)
-Decoded: 1 17 31 45 58 79 81 97 113 127 213 277 287 311 331 391 417 511
-Range test 4: range 511, num ARFCNs 6
-chan_list = 88 00 8b 3c 88 b9 6b 00 00 00 00 00 00 00 00 00
-Decoded freqs 6 (expected 6)
-Decoded: 1 17 31 45 58 79
-Range test 5: range 511, num ARFCNs 6
-chan_list = 88 05 08 fc 88 b9 6b 00 00 00 00 00 00 00 00 00
-Decoded freqs 6 (expected 6)
-Decoded: 10 17 31 45 58 79
-Range test 6: range 1023, num ARFCNs 17
-chan_list = 84 71 e4 ab b9 58 05 cb 39 17 fd b0 75 62 0f 2f
-Decoded freqs 17 (expected 17)
-Decoded: 0 17 31 45 58 79 81 97 113 127 213 277 287 311 331 391 1023
-Range test 7: range 1023, num ARFCNs 16
-chan_list = 80 71 e4 ab b9 58 05 cb 39 17 fd b0 75 62 0f 2f
-Decoded freqs 16 (expected 16)
-Decoded: 17 31 45 58 79 81 97 113 127 213 277 287 311 331 391 1023
-Random range test: range 127, max num ARFCNs 29
-Random range test: range 255, max num ARFCNs 22
-Random range test: range 511, max num ARFCNs 18
-Random range test: range 1023, max num ARFCNs 16
-testing RP-Reference wrap
-Allocated reference: 255
-Allocated reference: 0
-Allocated reference: 1
-Test SI2quater UARFCN (same scrambling code and diversity):
-generating SI2quater for 0 EARFCNs and 1 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 88 0a 7e 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 2 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 0a 7f 52 88 0a 7e 0b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 2 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 0a 7f 52 88 0a 7e 0b 2b 2b 2b 2b 2b 2b 2b 2b
-Testing SYSINFO_TYPE_2quater EARFCN generation:
-generating SI2quater for 0 EARFCNs and 0 UARFCNs...
-generated invalid SI2quater [00/00]: [23] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-added EARFCN 1917 - generating SI2quater for 1 EARFCNs and 0 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be e8 50 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-removed EARFCN 1917 - generating SI2quater for 0 EARFCNs and 0 UARFCNs...
-generated invalid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be e8 50 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-added EARFCN 1917 - generating SI2quater for 1 EARFCNs and 0 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be c8 50 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-added EARFCN 1932 - generating SI2quater for 2 EARFCNs and 0 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be cc 1e 30 14 03 2b 2b 2b 2b 2b 2b 2b 2b
-added EARFCN 1937 - generating SI2quater for 3 EARFCNs and 0 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be cc 1e 31 07 91 a0 a0 2b 2b 2b 2b 2b 2b
-added EARFCN 1945 - generating SI2quater for 4 EARFCNs and 0 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be cc 1e 31 07 91 a8 3c c8 28 0b 2b 2b 2b
-added EARFCN 1965 - generating SI2quater for 5 EARFCNs and 0 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 04 86 59 83 be cc 1e 31 07 91 a8 3c ca 0f 5a 0a 03 2b
-added EARFCN 1967 - generating SI2quater for 6 EARFCNs and 0 UARFCNs...
-generated valid SI2quater [00/01]: [23] 59 06 07 c0 20 04 86 59 83 be cc 1e 31 07 91 a8 3c ca 0f 5a 0a 03 2b
-generated valid SI2quater [01/01]: [23] 59 06 07 c2 20 04 86 59 83 d7 e0 50 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-added EARFCN 1982 - generating SI2quater for 7 EARFCNs and 0 UARFCNs...
-generated valid SI2quater [00/01]: [23] 59 06 07 c0 20 04 86 59 83 be cc 1e 31 07 91 a8 3c ca 0f 5a 0a 03 2b
-generated valid SI2quater [01/01]: [23] 59 06 07 c2 20 04 86 59 83 d7 e4 1e fa c2 80 2b 2b 2b 2b 2b 2b 2b 2b
-Testing SYSINFO_TYPE_2quater UARFCN generation:
-generating SI2quater for 0 EARFCNs and 0 UARFCNs...
-generated invalid SI2quater [00/00]: [23] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-generating SI2quater for 0 EARFCNs and 1 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 0c 1a 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 2 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 14 1a 1f 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 3 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 18 58 12 f0 83 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 4 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 20 58 2e f0 f2 03 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 5 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 28 58 2e 22 f2 4e 83 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 6 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 34 1a 64 26 5d f2 05 03 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 7 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 38 58 12 22 fd ce 8e 05 03 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 8 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 40 58 1d 22 fa ce 88 85 7b 0b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 9 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 4c 7a 34 0e 64 77 85 43 55 c8 0b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 10 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 50 1c 3b 31 fa dd 88 85 7b c4 1c 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 11 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 0f 7c 58 1c 3b 25 7a ea 08 91 fb c4 1f b0 2b 2b 2b
-Test SI2quater multiple UARFCNs:
-generating SI2quater for 0 EARFCNs and 1 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 88 0a 7c 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 2 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 0a 7f 52 88 0a 7c 0b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 3 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 12 7e e0 a9 44 05 3e 0b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 4 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 e8 18 3f f4 90 54 a2 02 9f 03 2b 2b 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 5 UARFCNs...
-generated valid SI2quater [00/00]: [23] 59 06 07 c0 00 25 52 ea 08 81 52 e8 18 3f f4 90 54 a2 02 9f 03 2b 2b
-generating SI2quater for 0 EARFCNs and 6 UARFCNs...
-generated valid SI2quater [00/01]: [23] 59 06 07 c0 20 25 52 ea 08 81 52 e8 10 3f f4 a9 75 04 a4 0b 2b 2b 2b
-generated valid SI2quater [01/01]: [23] 59 06 07 c2 20 25 52 e8 28 81 df 7f fa 32 d4 a2 02 9f 03 2b 2b 2b 2b
-generating SI2quater for 0 EARFCNs and 7 UARFCNs...
-generated valid SI2quater [00/01]: [23] 59 06 07 c0 20 25 52 ea 10 81 ce a9 74 08 1f fa 54 ba 82 52 03 2b 2b
-generated valid SI2quater [01/01]: [23] 59 06 07 c2 20 25 52 e8 30 81 d3 7f fd b2 86 54 a2 02 9f 03 2b 2b 2b
-Testing SYSINFO_TYPE_2quater combined EARFCN & UARFCN generation:
-generating SI2quater for 17 EARFCNs and 1 UARFCNs...
-generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 0c 1a 10 99 66 0f 04 83 c1 1c bb 2b 03 2b 2b
-generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c2 6c 1e 0f 60 f0 bb 08 3f d7 2e ca c1 2b
-generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 20 64 21 06 e1 08 55 08 53 d7 2e ca c1 2b
-generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 2a 64 21 56 e1 0a d5 08 49 d7 2e ca c1 2b
-generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 25 64 21 2e e1 09 94 e5 d9 58 2b 2b 2b 2b
-generating SI2quater for 17 EARFCNs and 2 UARFCNs...
-generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 14 4d e7 00 44 b3 07 82 41 e0 8e 5d 95 83 2b
-generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c2 6c 1e 0f 60 f0 bb 08 3f d7 2e ca c1 2b
-generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 20 64 21 06 e1 08 55 08 53 d7 2e ca c1 2b
-generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 2a 64 21 56 e1 0a d5 08 49 d7 2e ca c1 2b
-generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 25 64 21 2e e1 09 94 e5 d9 58 2b 2b 2b 2b
-generating SI2quater for 17 EARFCNs and 3 UARFCNs...
-generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 1c 4d e7 03 04 86 59 83 c1 20 f0 47 2e ca c1
-generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c2 6c 1e 0f 60 f0 bb 08 3f d7 2e ca c1 2b
-generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 20 64 21 06 e1 08 55 08 53 d7 2e ca c1 2b
-generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 2a 64 21 56 e1 0a d5 08 49 d7 2e ca c1 2b
-generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 25 64 21 2e e1 09 94 e5 d9 58 2b 2b 2b 2b
-generating SI2quater for 17 EARFCNs and 4 UARFCNs...
-generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 24 59 fa 26 73 84 86 59 83 c1 1c bb 2b 03 2b
-generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c1 20 f0 9b 07 83 d8 3c 2e b9 76 56 0b 2b
-generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 1f ec 21 03 21 08 37 08 42 a7 2e ca c1 2b
-generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 29 ec 21 53 21 0a b7 08 56 a7 2e ca c1 2b
-generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 24 ec 21 2b 21 09 77 08 4c a7 2e ca c1 2b
-generating SI2quater for 17 EARFCNs and 5 UARFCNs...
-generated valid SI2quater [00/04]: [23] 59 06 07 c0 80 25 0f 70 2c 59 fa 30 73 f6 04 86 59 83 c1 1c bb 2b 03
-generated valid SI2quater [01/04]: [23] 59 06 07 c2 80 04 86 59 83 c1 20 f0 9b 07 83 d8 3c 2e b9 76 56 0b 2b
-generated valid SI2quater [02/04]: [23] 59 06 07 c4 80 04 86 59 84 1f ec 21 03 21 08 37 08 42 a7 2e ca c1 2b
-generated valid SI2quater [03/04]: [23] 59 06 07 c6 80 04 86 59 84 29 ec 21 53 21 0a b7 08 56 a7 2e ca c1 2b
-generated valid SI2quater [04/04]: [23] 59 06 07 c8 80 04 86 59 84 24 ec 21 2b 21 09 77 08 4c a7 2e ca c1 2b
-generating SI2quater for 17 EARFCNs and 6 UARFCNs...
-generated valid SI2quater [00/05]: [23] 59 06 07 c0 a0 25 0f 70 34 f1 ae 15 f3 f4 83 04 86 59 72 ec ac 0b 2b
-generated valid SI2quater [01/05]: [23] 59 06 07 c2 a0 04 86 59 83 c1 20 f0 48 3c 26 c1 e0 f5 cb b2 b0 2b 2b
-generated valid SI2quater [02/05]: [23] 59 06 07 c4 a0 04 86 59 83 c2 ec 20 ff 61 08 19 08 41 b7 2e ca c1 2b
-generated valid SI2quater [03/05]: [23] 59 06 07 c6 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b
-generated valid SI2quater [04/05]: [23] 59 06 07 c8 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b
-generated valid SI2quater [05/05]: [23] 59 06 07 ca a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 17 EARFCNs and 7 UARFCNs...
-generated valid SI2quater [00/05]: [23] 59 06 07 c0 a0 25 0f 70 3c f1 ae 15 f3 f4 83 01 84 86 59 72 ec ac 0b
-generated valid SI2quater [01/05]: [23] 59 06 07 c2 a0 04 86 59 83 c1 20 f0 48 3c 26 c1 e0 f5 cb b2 b0 2b 2b
-generated valid SI2quater [02/05]: [23] 59 06 07 c4 a0 04 86 59 83 c2 ec 20 ff 61 08 19 08 41 b7 2e ca c1 2b
-generated valid SI2quater [03/05]: [23] 59 06 07 c6 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b
-generated valid SI2quater [04/05]: [23] 59 06 07 c8 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b
-generated valid SI2quater [05/05]: [23] 59 06 07 ca a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 17 EARFCNs and 8 UARFCNs...
-generated valid SI2quater [00/02]: [23] 59 06 07 c0 40 25 0f 70 45 19 a0 0d 7d 7e a6 19 e7 00 44 b3 07 82 41
-generated valid SI2quater [01/02]: [23] 59 06 07 c2 40 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b
-generated valid SI2quater [02/02]: [23] 59 06 07 c4 40 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 17 EARFCNs and 9 UARFCNs...
-generated valid SI2quater [00/02]: [23] 59 06 07 c0 40 25 0f 70 4d 19 a0 26 fd 66 a6 03 e7 fa 10 99 66 0f 04
-generated valid SI2quater [01/02]: [23] 59 06 07 c2 40 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b
-generated valid SI2quater [02/02]: [23] 59 06 07 c4 40 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 17 EARFCNs and 10 UARFCNs...
-generated valid SI2quater [00/05]: [23] 59 06 07 c0 a0 25 0f 70 55 47 89 1e fd 7c b0 00 e7 9b b0 04 12 c8 2b
-generated valid SI2quater [01/05]: [23] 59 06 07 c2 a0 04 86 59 83 c1 20 f0 48 3c 26 c1 e0 f5 cb b2 b0 2b 2b
-generated valid SI2quater [02/05]: [23] 59 06 07 c4 a0 04 86 59 83 c2 ec 20 ff 61 08 19 08 41 b7 2e ca c1 2b
-generated valid SI2quater [03/05]: [23] 59 06 07 c6 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b
-generated valid SI2quater [04/05]: [23] 59 06 07 c8 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b
-generated valid SI2quater [05/05]: [23] 59 06 07 ca a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b
-generating SI2quater for 17 EARFCNs and 11 UARFCNs...
-generated valid SI2quater [00/05]: [23] 59 06 07 c0 a0 25 0f 70 5d 47 89 1e fd 7c b0 01 67 9b b3 f8 2b 2b 2b
-generated valid SI2quater [01/05]: [23] 59 06 07 c2 a0 04 86 59 83 c1 20 f0 48 3c 26 c1 e0 f5 cb b2 b0 2b 2b
-generated valid SI2quater [02/05]: [23] 59 06 07 c4 a0 04 86 59 83 c2 ec 20 ff 61 08 19 08 41 b7 2e ca c1 2b
-generated valid SI2quater [03/05]: [23] 59 06 07 c6 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b
-generated valid SI2quater [04/05]: [23] 59 06 07 c8 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b
-generated valid SI2quater [05/05]: [23] 59 06 07 ca a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b
-Done.
diff --git a/tests/mgcp/Makefile.am b/tests/mgcp/Makefile.am
deleted file mode 100644
index 31d8a51f8..000000000
--- a/tests/mgcp/Makefile.am
+++ /dev/null
@@ -1,92 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- -I$(top_srcdir) \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_FLAGS) \
- $(LIBOSMONETIF_CFLAGS) \
- $(LIBOSMOSCCP_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(LIBBCG729_CFLAGS) \
- $(NULL)
-
-AM_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- mgcp_test.ok \
- mgcp_transcoding_test.ok \
- mgcpgw_client_test.ok \
- $(NULL)
-
-noinst_PROGRAMS = \
- mgcp_test \
- mgcpgw_client_test \
- $(NULL)
-if BUILD_MGCP_TRANSCODING
-noinst_PROGRAMS += \
- mgcp_transcoding_test \
- $(NULL)
-endif
-
-mgcp_test_SOURCES = \
- mgcp_test.c \
- $(NULL)
-
-mgcp_test_LDADD = \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libmgcp/libmgcp.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBOSMOSCCP_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBRARY_DL) \
- $(LIBOSMONETIF_LIBS) \
- -lrt \
- -lm \
- $(NULL)
-
-mgcp_transcoding_test_SOURCES = \
- mgcp_transcoding_test.c \
- $(NULL)
-
-mgcp_transcoding_test_LDADD = \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libmgcp/libmgcp.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBBCG729_LIBS) \
- $(LIBOSMOSCCP_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBRARY_DL) \
- $(LIBOSMONETIF_LIBS) \
- $(LIBRARY_GSM) \
- -lrt \
- -lm \
- $(NULL)
-
-mgcpgw_client_test_SOURCES = \
- mgcpgw_client_test.c \
- $(NULL)
-
-mgcpgw_client_test_LDADD = \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libmgcp/libmgcp.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBOSMOSCCP_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBRARY_DL) \
- $(LIBOSMONETIF_LIBS) \
- -lrt \
- -lm \
- $(NULL)
diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c
deleted file mode 100644
index 43a453af8..000000000
--- a/tests/mgcp/mgcp_test.c
+++ /dev/null
@@ -1,1227 +0,0 @@
-/*
- * (C) 2011-2012,2014 by Holger Hans Peter Freyther <zecke@selfish.org>
- * (C) 2011-2012,2014 by On-Waves
- * All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#undef _GNU_SOURCE
-#define _GNU_SOURCE
-
-#include <openbsc/mgcp.h>
-#include <openbsc/vty.h>
-#include <openbsc/mgcp_internal.h>
-
-#include <osmocom/core/application.h>
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-#include <string.h>
-#include <limits.h>
-#include <dlfcn.h>
-#include <time.h>
-#include <math.h>
-
-char *strline_r(char *str, char **saveptr);
-
-const char *strline_test_data =
- "one CR\r"
- "two CR\r"
- "\r"
- "one CRLF\r\n"
- "two CRLF\r\n"
- "\r\n"
- "one LF\n"
- "two LF\n"
- "\n"
- "mixed (4 lines)\r\r\n\n\r\n";
-
-#define EXPECTED_NUMBER_OF_LINES 13
-
-static void test_strline(void)
-{
- char *save = NULL;
- char *line;
- char buf[2048];
- int counter = 0;
-
- osmo_strlcpy(buf, strline_test_data, sizeof(buf));
-
- for (line = strline_r(buf, &save); line;
- line = strline_r(NULL, &save)) {
- printf("line: '%s'\n", line);
- counter++;
- }
-
- OSMO_ASSERT(counter == EXPECTED_NUMBER_OF_LINES);
-}
-
-#define AUEP1 "AUEP 158663169 ds/e1-1/2@172.16.6.66 MGCP 1.0\r\n"
-#define AUEP1_RET "200 158663169 OK\r\n"
-#define AUEP2 "AUEP 18983213 ds/e1-2/1@172.16.6.66 MGCP 1.0\r\n"
-#define AUEP2_RET "500 18983213 FAIL\r\n"
-#define EMPTY "\r\n"
-#define EMPTY_RET NULL
-#define SHORT "CRCX \r\n"
-#define SHORT_RET "510 000000 FAIL\r\n"
-
-#define MDCX_WRONG_EP "MDCX 18983213 ds/e1-3/1@172.16.6.66 MGCP 1.0\r\n"
-#define MDCX_ERR_RET "510 18983213 FAIL\r\n"
-#define MDCX_UNALLOCATED "MDCX 18983214 ds/e1-1/2@172.16.6.66 MGCP 1.0\r\n"
-#define MDCX_RET "400 18983214 FAIL\r\n"
-#define MDCX3 "MDCX 18983215 1@mgw MGCP 1.0\r\n"
-#define MDCX3_RET "200 18983215 OK\r\n" \
- "I: 1\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "s=-\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 0 RTP/AVP 126\r\n" \
- "a=rtpmap:126 AMR/8000\r\n" \
- "a=ptime:20\r\n"
-#define MDCX3_FMTP_RET "200 18983215 OK\r\n" \
- "I: 3\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 3 23 IN IP4 0.0.0.0\r\n" \
- "s=-\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 0 RTP/AVP 126\r\n" \
- "a=rtpmap:126 AMR/8000\r\n" \
- "a=fmtp:126 0/1/2\r\n" \
- "a=ptime:20\r\n"
-#define MDCX4 "MDCX 18983216 1@mgw MGCP 1.0\r\n" \
- "M: sendrecv\r" \
- "C: 2\r\n" \
- "I: 1\r\n" \
- "L: p:20, a:AMR, nt:IN\r\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 4441 RTP/AVP 99\r\n" \
- "a=rtpmap:99 AMR/8000\r\n" \
- "a=ptime:40\r\n"
-#define MDCX4_RET(Ident) "200 " Ident " OK\r\n" \
- "I: 1\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "s=-\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 0 RTP/AVP 126\r\n" \
- "a=rtpmap:126 AMR/8000\r\n" \
- "a=ptime:20\r\n"
-
-#define MDCX4_PT1 "MDCX 18983217 1@mgw MGCP 1.0\r\n" \
- "M: sendrecv\r" \
- "C: 2\r\n" \
- "I: 1\r\n" \
- "L: p:20-40, a:AMR, nt:IN\r\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 4441 RTP/AVP 99\r\n" \
- "a=rtpmap:99 AMR/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define MDCX4_PT2 "MDCX 18983218 1@mgw MGCP 1.0\r\n" \
- "M: sendrecv\r" \
- "C: 2\r\n" \
- "I: 1\r\n" \
- "L: p:20-20, a:AMR, nt:IN\r\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 4441 RTP/AVP 99\r\n" \
- "a=rtpmap:99 AMR/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define MDCX4_PT3 "MDCX 18983219 1@mgw MGCP 1.0\r\n" \
- "M: sendrecv\r" \
- "C: 2\r\n" \
- "I: 1\r\n" \
- "L: a:AMR, nt:IN\r\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 4441 RTP/AVP 99\r\n" \
- "a=rtpmap:99 AMR/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define MDCX4_SO "MDCX 18983220 1@mgw MGCP 1.0\r\n" \
- "M: sendonly\r" \
- "C: 2\r\n" \
- "I: 1\r\n" \
- "L: p:20, a:AMR, nt:IN\r\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 4441 RTP/AVP 99\r\n" \
- "a=rtpmap:99 AMR/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define MDCX4_RO "MDCX 18983221 1@mgw MGCP 1.0\r\n" \
- "M: recvonly\r" \
- "C: 2\r\n" \
- "I: 1\r\n" \
- "L: p:20, a:AMR, nt:IN\r\n"
-
-#define SHORT2 "CRCX 1"
-#define SHORT2_RET "510 000000 FAIL\r\n"
-#define SHORT3 "CRCX 1 1@mgw"
-#define SHORT4 "CRCX 1 1@mgw MGCP"
-#define SHORT5 "CRCX 1 1@mgw MGCP 1.0"
-
-#define CRCX "CRCX 2 1@mgw MGCP 1.0\r\n" \
- "M: recvonly\r\n" \
- "C: 2\r\n" \
- "X\r\n" \
- "L: p:20\r\n" \
- "\r\n" \
- "v=0\r\n" \
- "c=IN IP4 123.12.12.123\r\n" \
- "m=audio 5904 RTP/AVP 97\r\n" \
- "a=rtpmap:97 GSM-EFR/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define CRCX_RET "200 2 OK\r\n" \
- "I: 1\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "s=-\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 0 RTP/AVP 126\r\n" \
- "a=rtpmap:126 AMR/8000\r\n" \
- "a=ptime:20\r\n"
-
-#define CRCX_RET_NO_RTPMAP "200 2 OK\r\n" \
- "I: 1\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 1 23 IN IP4 0.0.0.0\r\n" \
- "s=-\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 0 RTP/AVP 126\r\n" \
- "a=ptime:20\r\n"
-
-#define CRCX_FMTP_RET "200 2 OK\r\n" \
- "I: 3\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 3 23 IN IP4 0.0.0.0\r\n" \
- "s=-\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 0 RTP/AVP 126\r\n" \
- "a=rtpmap:126 AMR/8000\r\n" \
- "a=fmtp:126 0/1/2\r\n" \
- "a=ptime:20\r\n"
-
-#define CRCX_ZYN "CRCX 2 1@mgw MGCP 1.0\r" \
- "M: recvonly\r" \
- "C: 2\r\r" \
- "v=0\r" \
- "c=IN IP4 123.12.12.123\r" \
- "m=audio 5904 RTP/AVP 97\r" \
- "a=rtpmap:97 GSM-EFR/8000\r"
-
-#define CRCX_ZYN_RET "200 2 OK\r\n" \
- "I: 2\n" \
- "\n" \
- "v=0\r\n" \
- "o=- 2 23 IN IP4 0.0.0.0\r\n" \
- "s=-\r\n" \
- "c=IN IP4 0.0.0.0\r\n" \
- "t=0 0\r\n" \
- "m=audio 0 RTP/AVP 126\r\n" \
- "a=rtpmap:126 AMR/8000\r\n" \
- "a=ptime:20\r\n"
-
-#define DLCX "DLCX 7 1@mgw MGCP 1.0\r\n" \
- "C: 2\r\n"
-
-#define DLCX_RET "250 7 OK\r\n" \
- "P: PS=0, OS=0, PR=0, OR=0, PL=0, JI=0\r\n" \
- "X-Osmo-CP: EC TIS=0, TOS=0, TIR=0, TOR=0\r\n"
-
-#define RQNT "RQNT 186908780 1@mgw MGCP 1.0\r\n" \
- "X: B244F267488\r\n" \
- "S: D/9\r\n"
-
-#define RQNT2 "RQNT 186908781 1@mgw MGCP 1.0\r\n" \
- "X: ADD4F26746F\r\n" \
- "R: D/[0-9#*](N), G/ft, fxr/t38\r\n"
-
-#define RQNT1_RET "200 186908780 OK\r\n"
-#define RQNT2_RET "200 186908781 OK\r\n"
-
-#define PTYPE_IGNORE 0 /* == default initializer */
-#define PTYPE_NONE 128
-#define PTYPE_NYI PTYPE_NONE
-
-#define CRCX_MULT_1 "CRCX 2 1@mgw MGCP 1.0\r\n" \
- "M: recvonly\r\n" \
- "C: 2\r\n" \
- "X\r\n" \
- "L: p:20\r\n" \
- "\r\n" \
- "v=0\r\n" \
- "c=IN IP4 123.12.12.123\r\n" \
- "m=audio 5904 RTP/AVP 18 97\r\n"\
- "a=rtpmap:18 G729/8000\r\n" \
- "a=rtpmap:97 GSM-EFR/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define CRCX_MULT_2 "CRCX 2 2@mgw MGCP 1.0\r\n" \
- "M: recvonly\r\n" \
- "C: 2\r\n" \
- "X\r\n" \
- "L: p:20\r\n" \
- "\r\n" \
- "v=0\r\n" \
- "c=IN IP4 123.12.12.123\r\n" \
- "m=audio 5904 RTP/AVP 18 97 101\r\n"\
- "a=rtpmap:18 G729/8000\r\n" \
- "a=rtpmap:97 GSM-EFR/8000\r\n" \
- "a=rtpmap:101 FOO/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define CRCX_MULT_3 "CRCX 2 3@mgw MGCP 1.0\r\n" \
- "M: recvonly\r\n" \
- "C: 2\r\n" \
- "X\r\n" \
- "L: p:20\r\n" \
- "\r\n" \
- "v=0\r\n" \
- "c=IN IP4 123.12.12.123\r\n" \
- "m=audio 5904 RTP/AVP\r\n" \
- "a=rtpmap:18 G729/8000\r\n" \
- "a=rtpmap:97 GSM-EFR/8000\r\n" \
- "a=rtpmap:101 FOO/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define CRCX_MULT_4 "CRCX 2 4@mgw MGCP 1.0\r\n" \
- "M: recvonly\r\n" \
- "C: 2\r\n" \
- "X\r\n" \
- "L: p:20\r\n" \
- "\r\n" \
- "v=0\r\n" \
- "c=IN IP4 123.12.12.123\r\n" \
- "m=audio 5904 RTP/AVP 18\r\n" \
- "a=rtpmap:18 G729/8000\r\n" \
- "a=rtpmap:97 GSM-EFR/8000\r\n" \
- "a=rtpmap:101 FOO/8000\r\n" \
- "a=ptime:40\r\n"
-
-#define CRCX_MULT_GSM_EXACT \
- "CRCX 259260421 5@mgw MGCP 1.0\r\n" \
- "C: 1355c6041e\r\n" \
- "I: 3\r\n" \
- "L: p:20, a:GSM, nt:IN\r\n" \
- "M: recvonly\r\n" \
- "\r\n" \
- "v=0\r\n" \
- "o=- 1439038275 1439038275 IN IP4 192.168.181.247\r\n" \
- "s=-\r\nc=IN IP4 192.168.181.247\r\n" \
- "t=0 0\r\nm=audio 29084 RTP/AVP 255 0 8 3 18 4 96 97 101\r\n" \
- "a=rtpmap:0 PCMU/8000\r\n" \
- "a=rtpmap:8 PCMA/8000\r\n" \
- "a=rtpmap:3 gsm/8000\r\n" \
- "a=rtpmap:18 G729/8000\r\n" \
- "a=fmtp:18 annexb=no\r\n" \
- "a=rtpmap:4 G723/8000\r\n" \
- "a=rtpmap:96 iLBC/8000\r\n" \
- "a=fmtp:96 mode=20\r\n" \
- "a=rtpmap:97 iLBC/8000\r\n" \
- "a=fmtp:97 mode=30\r\n" \
- "a=rtpmap:101 telephone-event/8000\r\n" \
- "a=fmtp:101 0-15\r\n" \
- "a=recvonly\r\n"
-#define MDCX_NAT_DUMMY \
- "MDCX 23 5@mgw MGCP 1.0\r\n" \
- "C: 1355c6041e\r\n" \
- "\r\n" \
- "c=IN IP4 8.8.8.8\r\n" \
- "m=audio 16434 RTP/AVP 255\r\n"
-
-
-struct mgcp_test {
- const char *name;
- const char *req;
- const char *exp_resp;
- int exp_net_ptype;
- int exp_bts_ptype;
-
- const char *extra_fmtp;
-};
-
-static const struct mgcp_test tests[] = {
- { "AUEP1", AUEP1, AUEP1_RET },
- { "AUEP2", AUEP2, AUEP2_RET },
- { "MDCX1", MDCX_WRONG_EP, MDCX_ERR_RET },
- { "MDCX2", MDCX_UNALLOCATED, MDCX_RET },
- { "CRCX", CRCX, CRCX_RET, 97, 126 },
- { "MDCX3", MDCX3, MDCX3_RET, PTYPE_NONE, 126 },
- { "MDCX4", MDCX4, MDCX4_RET("18983216"), 99, 126 },
- { "MDCX4_PT1", MDCX4_PT1, MDCX4_RET("18983217"), 99, 126 },
- { "MDCX4_PT2", MDCX4_PT2, MDCX4_RET("18983218"), 99, 126 },
- { "MDCX4_PT3", MDCX4_PT3, MDCX4_RET("18983219"), 99, 126 },
- { "MDCX4_SO", MDCX4_SO, MDCX4_RET("18983220"), 99, 126 },
- { "MDCX4_RO", MDCX4_RO, MDCX4_RET("18983221"), PTYPE_IGNORE, 126 },
- { "DLCX", DLCX, DLCX_RET, -1, -1 },
- { "CRCX_ZYN", CRCX_ZYN, CRCX_ZYN_RET, 97, 126 },
- { "EMPTY", EMPTY, EMPTY_RET },
- { "SHORT1", SHORT, SHORT_RET },
- { "SHORT2", SHORT2, SHORT2_RET },
- { "SHORT3", SHORT3, SHORT2_RET },
- { "SHORT4", SHORT4, SHORT2_RET },
- { "RQNT1", RQNT, RQNT1_RET },
- { "RQNT2", RQNT2, RQNT2_RET },
- { "DLCX", DLCX, DLCX_RET, -1, -1 },
- { "CRCX", CRCX, CRCX_FMTP_RET, 97, 126, .extra_fmtp = "a=fmtp:126 0/1/2" },
- { "MDCX3", MDCX3, MDCX3_FMTP_RET, PTYPE_NONE, 126 , .extra_fmtp = "a=fmtp:126 0/1/2" },
- { "DLCX", DLCX, DLCX_RET, -1, -1 , .extra_fmtp = "a=fmtp:126 0/1/2" },
-};
-
-static const struct mgcp_test retransmit[] = {
- { "CRCX", CRCX, CRCX_RET },
- { "RQNT1", RQNT, RQNT1_RET },
- { "RQNT2", RQNT2, RQNT2_RET },
- { "MDCX3", MDCX3, MDCX3_RET },
- { "DLCX", DLCX, DLCX_RET },
-};
-
-static struct msgb *create_msg(const char *str)
-{
- struct msgb *msg;
-
- msg = msgb_alloc_headroom(4096, 128, "MGCP msg");
- int len = sprintf((char *)msg->data, "%s", str);
- msg->l2h = msgb_put(msg, len);
- return msg;
-}
-
-static int last_endpoint = -1;
-
-static int mgcp_test_policy_cb(struct mgcp_trunk_config *cfg, int endpoint,
- int state, const char *transactio_id)
-{
- fprintf(stderr, "Policy CB got state %d on endpoint %d\n",
- state, endpoint);
- last_endpoint = endpoint;
- return MGCP_POLICY_CONT;
-}
-
-#define MGCP_DUMMY_LOAD 0x23
-static int dummy_packets = 0;
-/* override and forward */
-ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
- const struct sockaddr *dest_addr, socklen_t addrlen)
-{
- typedef ssize_t (*sendto_t)(int, const void *, size_t, int,
- const struct sockaddr *, socklen_t);
- static sendto_t real_sendto = NULL;
- uint32_t dest_host = htonl(((struct sockaddr_in *)dest_addr)->sin_addr.s_addr);
- int dest_port = htons(((struct sockaddr_in *)dest_addr)->sin_port);
-
- if (!real_sendto)
- real_sendto = dlsym(RTLD_NEXT, "sendto");
-
- if (len == 1 && ((const char *)buf)[0] == MGCP_DUMMY_LOAD ) {
- fprintf(stderr, "Dummy packet to 0x%08x:%d, msg length %zu\n%s\n\n",
- dest_host, dest_port,
- len, osmo_hexdump(buf, len));
- dummy_packets += 1;
- }
-
- return real_sendto(sockfd, buf, len, flags, dest_addr, addrlen);
-}
-
-static int64_t force_monotonic_time_us = -1;
-/* override and forward */
-int clock_gettime(clockid_t clk_id, struct timespec *tp)
-{
- typedef int (*clock_gettime_t)(clockid_t clk_id, struct timespec *tp);
- static clock_gettime_t real_clock_gettime = NULL;
-
- if (!real_clock_gettime)
- real_clock_gettime = dlsym(RTLD_NEXT, "clock_gettime");
-
- if (clk_id == CLOCK_MONOTONIC && force_monotonic_time_us >= 0) {
- tp->tv_sec = force_monotonic_time_us / 1000000;
- tp->tv_nsec = (force_monotonic_time_us % 1000000) * 1000;
- return 0;
- }
-
- return real_clock_gettime(clk_id, tp);
-}
-
-#define CONN_UNMODIFIED (0x1000)
-
-static void test_values(void)
-{
- /* Check that NONE disables all output */
- OSMO_ASSERT((MGCP_CONN_NONE & MGCP_CONN_RECV_SEND) == 0)
-
- /* Check that LOOPBACK enables all output */
- OSMO_ASSERT((MGCP_CONN_LOOPBACK & MGCP_CONN_RECV_SEND) ==
- MGCP_CONN_RECV_SEND)
-}
-
-
-static void test_messages(void)
-{
- struct mgcp_config *cfg;
- struct mgcp_endpoint *endp;
- int i;
-
- cfg = mgcp_config_alloc();
-
- cfg->trunk.number_endpoints = 64;
- mgcp_endpoints_allocate(&cfg->trunk);
-
- cfg->policy_cb = mgcp_test_policy_cb;
-
- mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1));
-
- /* reset endpoints */
- for (i = 0; i < cfg->trunk.number_endpoints; i++) {
- endp = &cfg->trunk.endpoints[i];
- endp->net_end.codec.payload_type = PTYPE_NONE;
- endp->net_end.packet_duration_ms = -1;
-
- OSMO_ASSERT(endp->conn_mode == MGCP_CONN_NONE);
- endp->conn_mode |= CONN_UNMODIFIED;
- }
-
- for (i = 0; i < ARRAY_SIZE(tests); i++) {
- const struct mgcp_test *t = &tests[i];
- struct msgb *inp;
- struct msgb *msg;
-
- printf("Testing %s\n", t->name);
-
- last_endpoint = -1;
- dummy_packets = 0;
-
- osmo_talloc_replace_string(cfg, &cfg->trunk.audio_fmtp_extra, t->extra_fmtp);
-
- inp = create_msg(t->req);
- msg = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- if (!t->exp_resp) {
- if (msg)
- printf("%s failed '%s'\n", t->name, (char *) msg->data);
- } else if (strcmp((char *) msg->data, t->exp_resp) != 0)
- printf("%s failed '%s'\n", t->name, (char *) msg->data);
- msgb_free(msg);
-
- if (dummy_packets)
- printf("Dummy packets: %d\n", dummy_packets);
-
- if (last_endpoint != -1) {
- endp = &cfg->trunk.endpoints[last_endpoint];
-
- if (endp->net_end.packet_duration_ms != -1)
- printf("Detected packet duration: %d\n",
- endp->net_end.packet_duration_ms);
- else
- printf("Packet duration not set\n");
- if (endp->local_options.pkt_period_min ||
- endp->local_options.pkt_period_max)
- printf("Requested packetetization period: "
- "%d-%d\n",
- endp->local_options.pkt_period_min,
- endp->local_options.pkt_period_max);
- else
- printf("Requested packetization period not set\n");
-
- if ((endp->conn_mode & CONN_UNMODIFIED) == 0) {
- printf("Connection mode: %d:%s%s%s%s\n",
- endp->conn_mode,
- !endp->conn_mode ? " NONE" : "",
- endp->conn_mode & MGCP_CONN_SEND_ONLY ?
- " SEND" : "",
- endp->conn_mode & MGCP_CONN_RECV_ONLY ?
- " RECV" : "",
- endp->conn_mode & MGCP_CONN_LOOPBACK &
- ~MGCP_CONN_RECV_SEND ?
- " LOOP" : "");
- fprintf(stderr,
- "BTS output %sabled, NET output %sabled\n",
- endp->bts_end.output_enabled ? "en" : "dis",
- endp->net_end.output_enabled ? "en" : "dis");
- } else
- printf("Connection mode not set\n");
-
- OSMO_ASSERT(endp->net_end.output_enabled ==
- (endp->conn_mode & MGCP_CONN_SEND_ONLY ? 1 : 0));
- OSMO_ASSERT(endp->bts_end.output_enabled ==
- (endp->conn_mode & MGCP_CONN_RECV_ONLY ? 1 : 0));
-
- endp->net_end.packet_duration_ms = -1;
- endp->local_options.pkt_period_min = 0;
- endp->local_options.pkt_period_max = 0;
- endp->conn_mode |= CONN_UNMODIFIED;
- }
-
-
- /* Check detected payload type */
- if (t->exp_net_ptype != PTYPE_IGNORE ||
- t->exp_bts_ptype != PTYPE_IGNORE) {
- OSMO_ASSERT(last_endpoint != -1);
- endp = &cfg->trunk.endpoints[last_endpoint];
-
- fprintf(stderr, "endpoint %d: "
- "payload type BTS %d (exp %d), NET %d (exp %d)\n",
- last_endpoint,
- endp->bts_end.codec.payload_type, t->exp_bts_ptype,
- endp->net_end.codec.payload_type, t->exp_net_ptype);
-
- if (t->exp_bts_ptype != PTYPE_IGNORE)
- OSMO_ASSERT(endp->bts_end.codec.payload_type ==
- t->exp_bts_ptype);
- if (t->exp_net_ptype != PTYPE_IGNORE)
- OSMO_ASSERT(endp->net_end.codec.payload_type ==
- t->exp_net_ptype);
-
- /* Reset them again for next test */
- endp->net_end.codec.payload_type = PTYPE_NONE;
- }
- }
-
- talloc_free(cfg);
-}
-
-static void test_retransmission(void)
-{
- struct mgcp_config *cfg;
- int i;
-
- cfg = mgcp_config_alloc();
-
- cfg->trunk.number_endpoints = 64;
- mgcp_endpoints_allocate(&cfg->trunk);
-
- mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1));
-
- /* reset endpoints */
- for (i = 0; i < cfg->trunk.number_endpoints; i++) {
- struct mgcp_endpoint *endp;
- endp = &cfg->trunk.endpoints[i];
- endp->bts_end.packet_duration_ms = 20;
- }
-
- for (i = 0; i < ARRAY_SIZE(retransmit); i++) {
- const struct mgcp_test *t = &retransmit[i];
- struct msgb *inp;
- struct msgb *msg;
-
- printf("Testing %s\n", t->name);
-
- inp = create_msg(t->req);
- msg = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- if (strcmp((char *) msg->data, t->exp_resp) != 0)
- printf("%s failed '%s'\n", t->name, (char *) msg->data);
- msgb_free(msg);
-
- /* Retransmit... */
- printf("Re-transmitting %s\n", t->name);
- inp = create_msg(t->req);
- msg = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- if (strcmp((char *) msg->data, t->exp_resp) != 0)
- printf("%s failed '%s'\n", t->name, (char *) msg->data);
- msgb_free(msg);
- }
-
- talloc_free(cfg);
-}
-
-static int rqnt_cb(struct mgcp_endpoint *endp, char _tone)
-{
- ptrdiff_t tone = _tone;
- endp->cfg->data = (void *) tone;
- return 0;
-}
-
-static void test_rqnt_cb(void)
-{
- struct mgcp_config *cfg;
- struct msgb *inp, *msg;
-
- cfg = mgcp_config_alloc();
- cfg->rqnt_cb = rqnt_cb;
-
- cfg->trunk.number_endpoints = 64;
- mgcp_endpoints_allocate(&cfg->trunk);
-
- mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1));
-
- inp = create_msg(CRCX);
- msgb_free(mgcp_handle_message(cfg, inp));
- msgb_free(inp);
-
- /* send the RQNT and check for the CB */
- inp = create_msg(RQNT);
- msg = mgcp_handle_message(cfg, inp);
- if (strncmp((const char *) msg->l2h, "200", 3) != 0) {
- printf("FAILED: message is not 200. '%s'\n", msg->l2h);
- abort();
- }
-
- if (cfg->data != (void *) '9') {
- printf("FAILED: callback not called: %p\n", cfg->data);
- abort();
- }
-
- msgb_free(msg);
- msgb_free(inp);
-
- inp = create_msg(DLCX);
- msgb_free(mgcp_handle_message(cfg, inp));
- msgb_free(inp);
- talloc_free(cfg);
-}
-
-struct pl_test {
- int cycles;
- uint16_t base_seq;
- uint16_t max_seq;
- uint32_t packets;
-
- uint32_t expected;
- int loss;
-};
-
-static const struct pl_test pl_test_dat[] = {
- /* basic.. just one package */
- { .cycles = 0, .base_seq = 0, .max_seq = 0, .packets = 1, .expected = 1, .loss = 0},
- /* some packages and a bit of loss */
- { .cycles = 0, .base_seq = 0, .max_seq = 100, .packets = 100, .expected = 101, .loss = 1},
- /* wrap around */
- { .cycles = 1<<16, .base_seq = 0xffff, .max_seq = 2, .packets = 4, .expected = 4, .loss = 0},
- /* min loss */
- { .cycles = 0, .base_seq = 0, .max_seq = 0, .packets = UINT_MAX, .expected = 1, .loss = INT_MIN },
- /* max loss, with wrap around on expected max */
- { .cycles = INT_MAX, .base_seq = 0, .max_seq = UINT16_MAX, .packets = 0, .expected = ((uint32_t)(INT_MAX) + UINT16_MAX + 1), .loss = INT_MAX },
-};
-
-static void test_packet_loss_calc(void)
-{
- int i;
- printf("Testing packet loss calculation.\n");
-
- for (i = 0; i < ARRAY_SIZE(pl_test_dat); ++i) {
- uint32_t expected;
- int loss;
- struct mgcp_rtp_state state;
- struct mgcp_rtp_end rtp;
- memset(&state, 0, sizeof(state));
- memset(&rtp, 0, sizeof(rtp));
-
- state.stats_initialized = 1;
- state.stats_base_seq = pl_test_dat[i].base_seq;
- state.stats_max_seq = pl_test_dat[i].max_seq;
- state.stats_cycles = pl_test_dat[i].cycles;
-
- rtp.packets = pl_test_dat[i].packets;
- mgcp_state_calc_loss(&state, &rtp, &expected, &loss);
-
- if (loss != pl_test_dat[i].loss || expected != pl_test_dat[i].expected) {
- printf("FAIL: Wrong exp/loss at idx(%d) Loss(%d vs. %d) Exp(%u vs. %u)\n",
- i, loss, pl_test_dat[i].loss,
- expected, pl_test_dat[i].expected);
- }
- }
-}
-
-static void test_mgcp_stats(void)
-{
- printf("Testing stat parsing\n");
-
- uint32_t bps, bos, pr, _or, jitter;
- struct msgb *msg;
- int loss;
- int rc;
-
- msg = create_msg(DLCX_RET);
- rc = mgcp_parse_stats(msg, &bps, &bos, &pr, &_or, &loss, &jitter);
- printf("Parsing result: %d\n", rc);
- if (bps != 0 || bos != 0 || pr != 0 || _or != 0 || loss != 0 || jitter != 0)
- printf("FAIL: Parsing failed1.\n");
- msgb_free(msg);
-
- msg = create_msg("250 7 OK\r\nP: PS=10, OS=20, PR=30, OR=40, PL=-3, JI=40\r\n");
- rc = mgcp_parse_stats(msg, &bps, &bos, &pr, &_or, &loss, &jitter);
- printf("Parsing result: %d\n", rc);
- if (bps != 10 || bos != 20 || pr != 30 || _or != 40 || loss != -3 || jitter != 40)
- printf("FAIL: Parsing failed2.\n");
- msgb_free(msg);
-}
-
-struct rtp_packet_info {
- float txtime;
- int len;
- char *data;
-};
-
-struct rtp_packet_info test_rtp_packets1[] = {
- /* RTP: SeqNo=0, TS=0 */
- {0.000000, 20, "\x80\x62\x00\x00\x00\x00\x00\x00\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=1, TS=160 */
- {0.020000, 20, "\x80\x62\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=2, TS=320 */
- {0.040000, 20, "\x80\x62\x00\x02\x00\x00\x01\x40\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* Repeat RTP timestamp: */
- /* RTP: SeqNo=3, TS=320 */
- {0.060000, 20, "\x80\x62\x00\x03\x00\x00\x01\x40\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=4, TS=480 */
- {0.080000, 20, "\x80\x62\x00\x04\x00\x00\x01\xE0\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=5, TS=640 */
- {0.100000, 20, "\x80\x62\x00\x05\x00\x00\x02\x80\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* Double skip RTP timestamp (delta = 2*160): */
- /* RTP: SeqNo=6, TS=960 */
- {0.120000, 20, "\x80\x62\x00\x06\x00\x00\x03\xC0\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=7, TS=1120 */
- {0.140000, 20, "\x80\x62\x00\x07\x00\x00\x04\x60\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=8, TS=1280 */
- {0.160000, 20, "\x80\x62\x00\x08\x00\x00\x05\x00\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* Non 20ms RTP timestamp (delta = 120): */
- /* RTP: SeqNo=9, TS=1400 */
- {0.180000, 20, "\x80\x62\x00\x09\x00\x00\x05\x78\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=10, TS=1560 */
- {0.200000, 20, "\x80\x62\x00\x0A\x00\x00\x06\x18\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=11, TS=1720 */
- {0.220000, 20, "\x80\x62\x00\x0B\x00\x00\x06\xB8\x11\x22\x33\x44"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* SSRC changed to 0x10203040, RTP timestamp jump */
- /* RTP: SeqNo=12, TS=34688 */
- {0.240000, 20, "\x80\x62\x00\x0C\x00\x00\x87\x80\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=13, TS=34848 */
- {0.260000, 20, "\x80\x62\x00\x0D\x00\x00\x88\x20\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=14, TS=35008 */
- {0.280000, 20, "\x80\x62\x00\x0E\x00\x00\x88\xC0\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* Non 20ms RTP timestamp (delta = 120): */
- /* RTP: SeqNo=15, TS=35128 */
- {0.300000, 20, "\x80\x62\x00\x0F\x00\x00\x89\x38\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=16, TS=35288 */
- {0.320000, 20, "\x80\x62\x00\x10\x00\x00\x89\xD8\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=17, TS=35448 */
- {0.340000, 20, "\x80\x62\x00\x11\x00\x00\x8A\x78\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x8A\xAB\xCD\xEF"},
- /* SeqNo increment by 2, RTP timestamp delta = 320: */
- /* RTP: SeqNo=19, TS=35768 */
- {0.360000, 20, "\x80\x62\x00\x13\x00\x00\x8B\xB8\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=20, TS=35928 */
- {0.380000, 20, "\x80\x62\x00\x14\x00\x00\x8C\x58\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=21, TS=36088 */
- {0.380000, 20, "\x80\x62\x00\x15\x00\x00\x8C\xF8\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* Repeat last packet */
- /* RTP: SeqNo=21, TS=36088 */
- {0.400000, 20, "\x80\x62\x00\x15\x00\x00\x8C\xF8\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=22, TS=36248 */
- {0.420000, 20, "\x80\x62\x00\x16\x00\x00\x8D\x98\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=23, TS=36408 */
- {0.440000, 20, "\x80\x62\x00\x17\x00\x00\x8E\x38\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* Don't increment SeqNo but increment timestamp by 160 */
- /* RTP: SeqNo=23, TS=36568 */
- {0.460000, 20, "\x80\x62\x00\x17\x00\x00\x8E\xD8\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=24, TS=36728 */
- {0.480000, 20, "\x80\x62\x00\x18\x00\x00\x8F\x78\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=25, TS=36888 */
- {0.500000, 20, "\x80\x62\x00\x19\x00\x00\x90\x18\x10\x20\x30\x40"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* SSRC changed to 0x50607080, RTP timestamp jump, Delay of 1.5s,
- * SeqNo jump */
- /* RTP: SeqNo=1000, TS=160000 */
- {2.000000, 20, "\x80\x62\x03\xE8\x00\x02\x71\x00\x50\x60\x70\x80"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=1001, TS=160160 */
- {2.020000, 20, "\x80\x62\x03\xE9\x00\x02\x71\xA0\x50\x60\x70\x80"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
- /* RTP: SeqNo=1002, TS=160320 */
- {2.040000, 20, "\x80\x62\x03\xEA\x00\x02\x72\x40\x50\x60\x70\x80"
- "\x01\x23\x45\x67\x89\xAB\xCD\xEF"},
-};
-
-void mgcp_patch_and_count(struct mgcp_endpoint *endp, struct mgcp_rtp_state *state,
- struct mgcp_rtp_end *rtp_end, struct sockaddr_in *addr,
- char *data, int len);
-
-static void test_packet_error_detection(int patch_ssrc, int patch_ts)
-{
- int i;
-
- struct mgcp_trunk_config trunk;
- struct mgcp_endpoint endp;
- struct mgcp_rtp_state state;
- struct mgcp_rtp_end *rtp = &endp.net_end;
- struct sockaddr_in addr = {0};
- char buffer[4096];
- uint32_t last_ssrc = 0;
- uint32_t last_timestamp = 0;
- uint32_t last_seqno = 0;
- int last_in_ts_err_cnt = 0;
- int last_out_ts_err_cnt = 0;
-
- printf("Testing packet error detection%s%s.\n",
- patch_ssrc ? ", patch SSRC" : "",
- patch_ts ? ", patch timestamps" : "");
-
- memset(&trunk, 0, sizeof(trunk));
- memset(&endp, 0, sizeof(endp));
- memset(&state, 0, sizeof(state));
-
- trunk.number_endpoints = 1;
- trunk.endpoints = &endp;
- trunk.force_constant_ssrc = patch_ssrc;
- trunk.force_aligned_timing = patch_ts;
-
- endp.tcfg = &trunk;
-
- mgcp_initialize_endp(&endp);
-
- rtp->codec.payload_type = 98;
-
- for (i = 0; i < ARRAY_SIZE(test_rtp_packets1); ++i) {
- struct rtp_packet_info *info = test_rtp_packets1 + i;
-
- force_monotonic_time_us = round(1000000.0 * info->txtime);
-
- OSMO_ASSERT(info->len <= sizeof(buffer));
- OSMO_ASSERT(info->len >= 0);
- memmove(buffer, info->data, info->len);
-
- mgcp_rtp_end_config(&endp, 1, rtp);
-
- mgcp_patch_and_count(&endp, &state, rtp, &addr,
- buffer, info->len);
-
- if (state.out_stream.ssrc != last_ssrc) {
- printf("Output SSRC changed to %08x\n",
- state.out_stream.ssrc);
- last_ssrc = state.out_stream.ssrc;
- }
-
- printf("In TS: %d, dTS: %d, Seq: %d\n",
- state.in_stream.last_timestamp,
- state.in_stream.last_tsdelta,
- state.in_stream.last_seq);
-
- printf("Out TS change: %d, dTS: %d, Seq change: %d, "
- "TS Err change: in %+d, out %+d\n",
- state.out_stream.last_timestamp - last_timestamp,
- state.out_stream.last_tsdelta,
- state.out_stream.last_seq - last_seqno,
- state.in_stream.err_ts_counter - last_in_ts_err_cnt,
- state.out_stream.err_ts_counter - last_out_ts_err_cnt);
-
- printf("Stats: Jitter = %u, Transit = %d\n",
- mgcp_state_calc_jitter(&state), state.stats_transit);
-
- last_in_ts_err_cnt = state.in_stream.err_ts_counter;
- last_out_ts_err_cnt = state.out_stream.err_ts_counter;
- last_timestamp = state.out_stream.last_timestamp;
- last_seqno = state.out_stream.last_seq;
- }
-
- force_monotonic_time_us = -1;
-}
-
-static void test_multilple_codec(void)
-{
- struct mgcp_config *cfg;
- struct mgcp_endpoint *endp;
- struct msgb *inp, *resp;
- struct in_addr addr;
-
- printf("Testing multiple payload types\n");
-
- cfg = mgcp_config_alloc();
- cfg->trunk.number_endpoints = 64;
- mgcp_endpoints_allocate(&cfg->trunk);
- cfg->policy_cb = mgcp_test_policy_cb;
- mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1));
-
- /* Allocate endpoint 1@mgw with two codecs */
- last_endpoint = -1;
- inp = create_msg(CRCX_MULT_1);
- resp = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- msgb_free(resp);
-
- OSMO_ASSERT(last_endpoint == 1);
- endp = &cfg->trunk.endpoints[last_endpoint];
- OSMO_ASSERT(endp->net_end.codec.payload_type == 18);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 97);
-
- /* Allocate 2@mgw with three codecs, last one ignored */
- last_endpoint = -1;
- inp = create_msg(CRCX_MULT_2);
- resp = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- msgb_free(resp);
-
- OSMO_ASSERT(last_endpoint == 2);
- endp = &cfg->trunk.endpoints[last_endpoint];
- OSMO_ASSERT(endp->net_end.codec.payload_type == 18);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 97);
-
- /* Allocate 3@mgw with no codecs, check for PT == -1 */
- last_endpoint = -1;
- inp = create_msg(CRCX_MULT_3);
- resp = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- msgb_free(resp);
-
- OSMO_ASSERT(last_endpoint == 3);
- endp = &cfg->trunk.endpoints[last_endpoint];
- OSMO_ASSERT(endp->net_end.codec.payload_type == -1);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == -1);
-
- /* Allocate 4@mgw with a single codec */
- last_endpoint = -1;
- inp = create_msg(CRCX_MULT_4);
- resp = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- msgb_free(resp);
-
- OSMO_ASSERT(last_endpoint == 4);
- endp = &cfg->trunk.endpoints[last_endpoint];
- OSMO_ASSERT(endp->net_end.codec.payload_type == 18);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == -1);
-
- /* Allocate 5@mgw at select GSM.. */
- last_endpoint = -1;
- inp = create_msg(CRCX_MULT_GSM_EXACT);
- talloc_free(cfg->trunk.audio_name);
- cfg->trunk.audio_name = "GSM/8000";
- cfg->trunk.no_audio_transcoding = 1;
- resp = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- msgb_free(resp);
-
- OSMO_ASSERT(last_endpoint == 5);
- endp = &cfg->trunk.endpoints[last_endpoint];
- OSMO_ASSERT(endp->net_end.codec.payload_type == 3);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == -1);
-
- inp = create_msg(MDCX_NAT_DUMMY);
- last_endpoint = -1;
- resp = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- msgb_free(resp);
- OSMO_ASSERT(last_endpoint == 5);
- endp = &cfg->trunk.endpoints[last_endpoint];
- OSMO_ASSERT(endp->net_end.codec.payload_type == 3);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == -1);
- OSMO_ASSERT(endp->net_end.rtp_port == htons(16434));
- memset(&addr, 0, sizeof(addr));
- inet_aton("8.8.8.8", &addr);
- OSMO_ASSERT(endp->net_end.addr.s_addr == addr.s_addr);
-
- /* Check what happens without that flag */
-
- /* Free the previous endpoint and the data ... */
- mgcp_release_endp(endp);
- talloc_free(endp->last_response);
- talloc_free(endp->last_trans);
- endp->last_response = endp->last_trans = NULL;
-
- last_endpoint = -1;
- inp = create_msg(CRCX_MULT_GSM_EXACT);
- cfg->trunk.no_audio_transcoding = 0;
- resp = mgcp_handle_message(cfg, inp);
- msgb_free(inp);
- msgb_free(resp);
-
- OSMO_ASSERT(last_endpoint == 5);
- endp = &cfg->trunk.endpoints[last_endpoint];
- OSMO_ASSERT(endp->net_end.codec.payload_type == 255);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 0);
-
- talloc_free(cfg);
-}
-
-static void test_no_cycle(void)
-{
- struct mgcp_config *cfg;
- struct mgcp_endpoint *endp;
-
- printf("Testing no sequence flow on initial packet\n");
-
- cfg = mgcp_config_alloc();
- cfg->trunk.number_endpoints = 64;
- mgcp_endpoints_allocate(&cfg->trunk);
-
- endp = &cfg->trunk.endpoints[1];
- OSMO_ASSERT(endp->net_state.stats_initialized == 0);
-
- mgcp_rtp_annex_count(endp, &endp->net_state, 0, 0, 2342);
- OSMO_ASSERT(endp->net_state.stats_initialized == 1);
- OSMO_ASSERT(endp->net_state.stats_cycles == 0);
- OSMO_ASSERT(endp->net_state.stats_max_seq == 0);
-
- mgcp_rtp_annex_count(endp, &endp->net_state, 1, 0, 2342);
- OSMO_ASSERT(endp->net_state.stats_initialized == 1);
- OSMO_ASSERT(endp->net_state.stats_cycles == 0);
- OSMO_ASSERT(endp->net_state.stats_max_seq == 1);
-
- /* now jump.. */
- mgcp_rtp_annex_count(endp, &endp->net_state, UINT16_MAX, 0, 2342);
- OSMO_ASSERT(endp->net_state.stats_initialized == 1);
- OSMO_ASSERT(endp->net_state.stats_cycles == 0);
- OSMO_ASSERT(endp->net_state.stats_max_seq == UINT16_MAX);
-
- /* and wrap */
- mgcp_rtp_annex_count(endp, &endp->net_state, 0, 0, 2342);
- OSMO_ASSERT(endp->net_state.stats_initialized == 1);
- OSMO_ASSERT(endp->net_state.stats_cycles == UINT16_MAX + 1);
- OSMO_ASSERT(endp->net_state.stats_max_seq == 0);
-
- talloc_free(cfg);
-}
-
-static void test_no_name(void)
-{
- struct mgcp_config *cfg;
- struct mgcp_endpoint *endp;
- struct msgb *inp, *msg;
- int i;
-
- printf("Testing no rtpmap name\n");
- cfg = mgcp_config_alloc();
-
- cfg->trunk.number_endpoints = 64;
- cfg->trunk.audio_send_name = 0;
- mgcp_endpoints_allocate(&cfg->trunk);
-
- cfg->policy_cb = mgcp_test_policy_cb;
-
- mgcp_endpoints_allocate(mgcp_trunk_alloc(cfg, 1));
-
- /* reset endpoints */
- for (i = 0; i < cfg->trunk.number_endpoints; i++) {
- endp = &cfg->trunk.endpoints[i];
- endp->net_end.codec.payload_type = PTYPE_NONE;
- endp->net_end.packet_duration_ms = -1;
-
- OSMO_ASSERT(endp->conn_mode == MGCP_CONN_NONE);
- endp->conn_mode |= CONN_UNMODIFIED;
- }
-
- inp = create_msg(CRCX);
- msg = mgcp_handle_message(cfg, inp);
- if (strcmp((char *) msg->data, CRCX_RET_NO_RTPMAP) != 0)
- printf("FAILED: there should not be a RTPMAP: %s\n",
- (char *) msg->data);
- msgb_free(inp);
- msgb_free(msg);
-
- mgcp_release_endp(&cfg->trunk.endpoints[1]);
- talloc_free(cfg);
-}
-
-static void test_osmux_cid(void)
-{
- int id, i;
-
- OSMO_ASSERT(osmux_used_cid() == 0);
- id = osmux_get_cid();
- OSMO_ASSERT(id == 0);
- OSMO_ASSERT(osmux_used_cid() == 1);
- osmux_put_cid(id);
- OSMO_ASSERT(osmux_used_cid() == 0);
-
- for (i = 0; i < 256; ++i) {
- id = osmux_get_cid();
- OSMO_ASSERT(id == i);
- OSMO_ASSERT(osmux_used_cid() == i + 1);
- }
-
- id = osmux_get_cid();
- OSMO_ASSERT(id == -1);
-
- for (i = 0; i < 256; ++i)
- osmux_put_cid(i);
- OSMO_ASSERT(osmux_used_cid() == 0);
-}
-
-int main(int argc, char **argv)
-{
- msgb_talloc_ctx_init(NULL, 0);
- osmo_init_logging(&log_info);
-
- test_strline();
- test_values();
- test_messages();
- test_retransmission();
- test_packet_loss_calc();
- test_rqnt_cb();
- test_mgcp_stats();
- test_packet_error_detection(1, 0);
- test_packet_error_detection(0, 0);
- test_packet_error_detection(0, 1);
- test_packet_error_detection(1, 1);
- test_multilple_codec();
- test_no_cycle();
- test_no_name();
- test_osmux_cid();
-
- printf("Done\n");
- return EXIT_SUCCESS;
-}
diff --git a/tests/mgcp/mgcp_test.ok b/tests/mgcp/mgcp_test.ok
deleted file mode 100644
index 4e27282ee..000000000
--- a/tests/mgcp/mgcp_test.ok
+++ /dev/null
@@ -1,480 +0,0 @@
-line: 'one CR'
-line: 'two CR'
-line: ''
-line: 'one CRLF'
-line: 'two CRLF'
-line: ''
-line: 'one LF'
-line: 'two LF'
-line: ''
-line: 'mixed (4 lines)'
-line: ''
-line: ''
-line: ''
-Testing AUEP1
-Testing AUEP2
-Testing MDCX1
-Testing MDCX2
-Testing CRCX
-Dummy packets: 1
-Detected packet duration: 40
-Requested packetetization period: 20-20
-Connection mode: 1: RECV
-Testing MDCX3
-Dummy packets: 1
-Packet duration not set
-Requested packetization period not set
-Connection mode not set
-Testing MDCX4
-Dummy packets: 1
-Detected packet duration: 40
-Requested packetetization period: 20-20
-Connection mode: 3: SEND RECV
-Testing MDCX4_PT1
-Dummy packets: 1
-Detected packet duration: 40
-Requested packetetization period: 20-40
-Connection mode: 3: SEND RECV
-Testing MDCX4_PT2
-Dummy packets: 1
-Detected packet duration: 40
-Requested packetetization period: 20-20
-Connection mode: 3: SEND RECV
-Testing MDCX4_PT3
-Dummy packets: 1
-Detected packet duration: 40
-Requested packetization period not set
-Connection mode: 3: SEND RECV
-Testing MDCX4_SO
-Detected packet duration: 40
-Requested packetetization period: 20-20
-Connection mode: 2: SEND
-Testing MDCX4_RO
-Dummy packets: 1
-Packet duration not set
-Requested packetetization period: 20-20
-Connection mode: 1: RECV
-Testing DLCX
-Detected packet duration: 20
-Requested packetization period not set
-Connection mode: 0: NONE
-Testing CRCX_ZYN
-Dummy packets: 1
-Packet duration not set
-Requested packetization period not set
-Connection mode: 1: RECV
-Testing EMPTY
-Testing SHORT1
-Testing SHORT2
-Testing SHORT3
-Testing SHORT4
-Testing RQNT1
-Testing RQNT2
-Testing DLCX
-Detected packet duration: 20
-Requested packetization period not set
-Connection mode: 0: NONE
-Testing CRCX
-Dummy packets: 1
-Detected packet duration: 40
-Requested packetetization period: 20-20
-Connection mode: 1: RECV
-Testing MDCX3
-Dummy packets: 1
-Packet duration not set
-Requested packetization period not set
-Connection mode not set
-Testing DLCX
-Detected packet duration: 20
-Requested packetization period not set
-Connection mode: 0: NONE
-Testing CRCX
-Re-transmitting CRCX
-Testing RQNT1
-Re-transmitting RQNT1
-Testing RQNT2
-Re-transmitting RQNT2
-Testing MDCX3
-Re-transmitting MDCX3
-Testing DLCX
-Re-transmitting DLCX
-Testing packet loss calculation.
-Testing stat parsing
-Parsing result: 0
-Parsing result: 0
-Testing packet error detection, patch SSRC.
-Output SSRC changed to 11223344
-In TS: 0, dTS: 0, Seq: 0
-Out TS change: 0, dTS: 0, Seq change: 0, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 160, dTS: 160, Seq: 1
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 320, dTS: 160, Seq: 2
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 320, dTS: 160, Seq: 3
-Out TS change: 0, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 10, Transit = 160
-In TS: 480, dTS: 160, Seq: 4
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 9, Transit = 160
-In TS: 640, dTS: 160, Seq: 5
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 8, Transit = 160
-In TS: 960, dTS: 320, Seq: 6
-Out TS change: 320, dTS: 320, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 18, Transit = 0
-In TS: 1120, dTS: 160, Seq: 7
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 17, Transit = 0
-In TS: 1280, dTS: 160, Seq: 8
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 16, Transit = 0
-In TS: 1400, dTS: 120, Seq: 9
-Out TS change: 120, dTS: 120, Seq change: 1, TS Err change: in +1, out +1
-Stats: Jitter = 17, Transit = 40
-In TS: 1560, dTS: 160, Seq: 10
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 16, Transit = 40
-In TS: 1720, dTS: 160, Seq: 11
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 15, Transit = 40
-In TS: 34688, dTS: 0, Seq: 12
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 34848, dTS: 160, Seq: 13
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 35008, dTS: 160, Seq: 14
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 35128, dTS: 120, Seq: 15
-Out TS change: 120, dTS: 120, Seq change: 1, TS Err change: in +1, out +1
-Stats: Jitter = 2, Transit = -32728
-In TS: 35288, dTS: 160, Seq: 16
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35448, dTS: 160, Seq: 17
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35768, dTS: 160, Seq: 19
-Out TS change: 320, dTS: 160, Seq change: 2, TS Err change: in +0, out +0
-Stats: Jitter = 12, Transit = -32888
-In TS: 35928, dTS: 160, Seq: 20
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 11, Transit = -32888
-In TS: 36088, dTS: 160, Seq: 21
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 20, Transit = -33048
-In TS: 36088, dTS: 160, Seq: 21
-Out TS change: 0, dTS: 160, Seq change: 0, TS Err change: in +0, out +0
-Stats: Jitter = 29, Transit = -32888
-In TS: 36248, dTS: 160, Seq: 22
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 27, Transit = -32888
-In TS: 36408, dTS: 160, Seq: 23
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 25, Transit = -32888
-In TS: 36568, dTS: 160, Seq: 23
-Out TS change: 160, dTS: 160, Seq change: 0, TS Err change: in +1, out +1
-Stats: Jitter = 24, Transit = -32888
-In TS: 36728, dTS: 160, Seq: 24
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 22, Transit = -32888
-In TS: 36888, dTS: 160, Seq: 25
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 21, Transit = -32888
-In TS: 160000, dTS: 0, Seq: 1000
-Out TS change: 12000, dTS: 12000, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-In TS: 160160, dTS: 160, Seq: 1001
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-In TS: 160320, dTS: 160, Seq: 1002
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-Testing packet error detection.
-Output SSRC changed to 11223344
-In TS: 0, dTS: 0, Seq: 0
-Out TS change: 0, dTS: 0, Seq change: 0, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 160, dTS: 160, Seq: 1
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 320, dTS: 160, Seq: 2
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 320, dTS: 160, Seq: 3
-Out TS change: 0, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 10, Transit = 160
-In TS: 480, dTS: 160, Seq: 4
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 9, Transit = 160
-In TS: 640, dTS: 160, Seq: 5
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 8, Transit = 160
-In TS: 960, dTS: 320, Seq: 6
-Out TS change: 320, dTS: 320, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 18, Transit = 0
-In TS: 1120, dTS: 160, Seq: 7
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 17, Transit = 0
-In TS: 1280, dTS: 160, Seq: 8
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 16, Transit = 0
-In TS: 1400, dTS: 120, Seq: 9
-Out TS change: 120, dTS: 120, Seq change: 1, TS Err change: in +1, out +1
-Stats: Jitter = 17, Transit = 40
-In TS: 1560, dTS: 160, Seq: 10
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 16, Transit = 40
-In TS: 1720, dTS: 160, Seq: 11
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 15, Transit = 40
-Output SSRC changed to 10203040
-In TS: 34688, dTS: 0, Seq: 12
-Out TS change: 32968, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 34848, dTS: 160, Seq: 13
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 35008, dTS: 160, Seq: 14
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 35128, dTS: 120, Seq: 15
-Out TS change: 120, dTS: 120, Seq change: 1, TS Err change: in +1, out +1
-Stats: Jitter = 2, Transit = -32728
-In TS: 35288, dTS: 160, Seq: 16
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35448, dTS: 160, Seq: 17
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35768, dTS: 160, Seq: 19
-Out TS change: 320, dTS: 160, Seq change: 2, TS Err change: in +0, out +0
-Stats: Jitter = 12, Transit = -32888
-In TS: 35928, dTS: 160, Seq: 20
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 11, Transit = -32888
-In TS: 36088, dTS: 160, Seq: 21
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 20, Transit = -33048
-In TS: 36088, dTS: 160, Seq: 21
-Out TS change: 0, dTS: 160, Seq change: 0, TS Err change: in +0, out +0
-Stats: Jitter = 29, Transit = -32888
-In TS: 36248, dTS: 160, Seq: 22
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 27, Transit = -32888
-In TS: 36408, dTS: 160, Seq: 23
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 25, Transit = -32888
-In TS: 36568, dTS: 160, Seq: 23
-Out TS change: 160, dTS: 160, Seq change: 0, TS Err change: in +1, out +1
-Stats: Jitter = 24, Transit = -32888
-In TS: 36728, dTS: 160, Seq: 24
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 22, Transit = -32888
-In TS: 36888, dTS: 160, Seq: 25
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 21, Transit = -32888
-Output SSRC changed to 50607080
-In TS: 160000, dTS: 0, Seq: 1000
-Out TS change: 123112, dTS: 160, Seq change: 975, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-In TS: 160160, dTS: 160, Seq: 1001
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-In TS: 160320, dTS: 160, Seq: 1002
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-Testing packet error detection, patch timestamps.
-Output SSRC changed to 11223344
-In TS: 0, dTS: 0, Seq: 0
-Out TS change: 0, dTS: 0, Seq change: 0, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 160, dTS: 160, Seq: 1
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 320, dTS: 160, Seq: 2
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 320, dTS: 160, Seq: 3
-Out TS change: 0, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 10, Transit = 160
-In TS: 480, dTS: 160, Seq: 4
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 9, Transit = 160
-In TS: 640, dTS: 160, Seq: 5
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 8, Transit = 160
-In TS: 960, dTS: 320, Seq: 6
-Out TS change: 320, dTS: 320, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 18, Transit = 0
-In TS: 1120, dTS: 160, Seq: 7
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 17, Transit = 0
-In TS: 1280, dTS: 160, Seq: 8
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 16, Transit = 0
-In TS: 1400, dTS: 120, Seq: 9
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +1, out +0
-Stats: Jitter = 17, Transit = 40
-In TS: 1560, dTS: 160, Seq: 10
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 16, Transit = 40
-In TS: 1720, dTS: 160, Seq: 11
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 15, Transit = 40
-Output SSRC changed to 10203040
-In TS: 34688, dTS: 0, Seq: 12
-Out TS change: 32968, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 34848, dTS: 160, Seq: 13
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 35008, dTS: 160, Seq: 14
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 35128, dTS: 120, Seq: 15
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +1, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35288, dTS: 160, Seq: 16
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35448, dTS: 160, Seq: 17
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35768, dTS: 160, Seq: 19
-Out TS change: 320, dTS: 160, Seq change: 2, TS Err change: in +0, out +0
-Stats: Jitter = 12, Transit = -32888
-In TS: 35928, dTS: 160, Seq: 20
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 11, Transit = -32888
-In TS: 36088, dTS: 160, Seq: 21
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 20, Transit = -33048
-In TS: 36088, dTS: 160, Seq: 21
-Out TS change: 0, dTS: 160, Seq change: 0, TS Err change: in +0, out +0
-Stats: Jitter = 29, Transit = -32888
-In TS: 36248, dTS: 160, Seq: 22
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 27, Transit = -32888
-In TS: 36408, dTS: 160, Seq: 23
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 25, Transit = -32888
-In TS: 36568, dTS: 160, Seq: 23
-Out TS change: 160, dTS: 160, Seq change: 0, TS Err change: in +1, out +1
-Stats: Jitter = 24, Transit = -32888
-In TS: 36728, dTS: 160, Seq: 24
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 22, Transit = -32888
-In TS: 36888, dTS: 160, Seq: 25
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 21, Transit = -32888
-Output SSRC changed to 50607080
-In TS: 160000, dTS: 0, Seq: 1000
-Out TS change: 123112, dTS: 160, Seq change: 975, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-In TS: 160160, dTS: 160, Seq: 1001
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-In TS: 160320, dTS: 160, Seq: 1002
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-Testing packet error detection, patch SSRC, patch timestamps.
-Output SSRC changed to 11223344
-In TS: 0, dTS: 0, Seq: 0
-Out TS change: 0, dTS: 0, Seq change: 0, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 160, dTS: 160, Seq: 1
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 320, dTS: 160, Seq: 2
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = 0
-In TS: 320, dTS: 160, Seq: 3
-Out TS change: 0, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 10, Transit = 160
-In TS: 480, dTS: 160, Seq: 4
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 9, Transit = 160
-In TS: 640, dTS: 160, Seq: 5
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 8, Transit = 160
-In TS: 960, dTS: 320, Seq: 6
-Out TS change: 320, dTS: 320, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 18, Transit = 0
-In TS: 1120, dTS: 160, Seq: 7
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 17, Transit = 0
-In TS: 1280, dTS: 160, Seq: 8
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 16, Transit = 0
-In TS: 1400, dTS: 120, Seq: 9
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +1, out +0
-Stats: Jitter = 17, Transit = 40
-In TS: 1560, dTS: 160, Seq: 10
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 16, Transit = 40
-In TS: 1720, dTS: 160, Seq: 11
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 15, Transit = 40
-In TS: 34688, dTS: 0, Seq: 12
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 34848, dTS: 160, Seq: 13
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 35008, dTS: 160, Seq: 14
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -32768
-In TS: 35128, dTS: 120, Seq: 15
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +1, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35288, dTS: 160, Seq: 16
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35448, dTS: 160, Seq: 17
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 2, Transit = -32728
-In TS: 35768, dTS: 160, Seq: 19
-Out TS change: 320, dTS: 160, Seq change: 2, TS Err change: in +0, out +0
-Stats: Jitter = 12, Transit = -32888
-In TS: 35928, dTS: 160, Seq: 20
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 11, Transit = -32888
-In TS: 36088, dTS: 160, Seq: 21
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 20, Transit = -33048
-In TS: 36088, dTS: 160, Seq: 21
-Out TS change: 0, dTS: 160, Seq change: 0, TS Err change: in +0, out +0
-Stats: Jitter = 29, Transit = -32888
-In TS: 36248, dTS: 160, Seq: 22
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 27, Transit = -32888
-In TS: 36408, dTS: 160, Seq: 23
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 25, Transit = -32888
-In TS: 36568, dTS: 160, Seq: 23
-Out TS change: 160, dTS: 160, Seq change: 0, TS Err change: in +1, out +1
-Stats: Jitter = 24, Transit = -32888
-In TS: 36728, dTS: 160, Seq: 24
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 22, Transit = -32888
-In TS: 36888, dTS: 160, Seq: 25
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 21, Transit = -32888
-In TS: 160000, dTS: 0, Seq: 1000
-Out TS change: 12000, dTS: 12000, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-In TS: 160160, dTS: 160, Seq: 1001
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-In TS: 160320, dTS: 160, Seq: 1002
-Out TS change: 160, dTS: 160, Seq change: 1, TS Err change: in +0, out +0
-Stats: Jitter = 0, Transit = -144000
-Testing multiple payload types
-Testing no sequence flow on initial packet
-Testing no rtpmap name
-Done
diff --git a/tests/mgcp/mgcp_transcoding_test.c b/tests/mgcp/mgcp_transcoding_test.c
deleted file mode 100644
index c5c0a0bab..000000000
--- a/tests/mgcp/mgcp_transcoding_test.c
+++ /dev/null
@@ -1,654 +0,0 @@
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <err.h>
-#include <stdint.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/application.h>
-
-#include <osmocom/netif/rtp.h>
-
-#include <openbsc/debug.h>
-#include <openbsc/gsm_data.h>
-#include <openbsc/mgcp.h>
-#include <openbsc/mgcp_internal.h>
-
-#include "bscconfig.h"
-#ifndef BUILD_MGCP_TRANSCODING
-#error "Requires MGCP transcoding enabled (see --enable-mgcp-transcoding)"
-#endif
-
-#include "openbsc/mgcp_transcode.h"
-
-uint8_t *audio_frame_l16[] = {
-};
-
-struct rtp_packets {
- float t;
- int len;
- char *data;
-};
-
-struct rtp_packets audio_packets_l16[] = {
- /* RTP: SeqNo=1, TS=160 */
- {0.020000, 332,
- "\x80\x0B\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- "\x00\x00\x40\x13\x5A\x9E\x40\x13\x00\x00\xBF\xED\xA5\x62\xBF\xED"
- },
-};
-
-struct rtp_packets audio_packets_gsm[] = {
- /* RTP: SeqNo=1, TS=160 */
- {0.020000, 45,
- "\x80\x03\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44"
- "\xD4\x7C\xE3\xE9\x62\x50\x39\xF0\xF8\xB4\x68\xEA\x6C\x0E\x81\x1B"
- "\x56\x2A\xD5\xBC\x69\x9C\xD1\xF0\x66\x7A\xEC\x49\x7A\x33\x3D\x0A"
- "\xDE"
- },
-};
-
-struct rtp_packets audio_packets_gsm_invalid_size[] = {
- /* RTP: SeqNo=1, TS=160 */
- {0.020000, 41,
- "\x80\x03\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44"
- "\xD4\x7C\xE3\xE9\x62\x50\x39\xF0\xF8\xB4\x68\xEA\x6C\x0E\x81\x1B"
- "\x56\x2A\xD5\xBC\x69\x9C\xD1\xF0\x66\x7A\xEC\x49\x7A\x33\x3D\x0A"
- "\xDE"
- },
-};
-
-struct rtp_packets audio_packets_gsm_invalid_data[] = {
- /* RTP: SeqNo=1, TS=160 */
- {0.020000, 45,
- "\x80\x03\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44"
- "\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
- "\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE\xEE"
- "\xEE"
- },
-};
-
-struct rtp_packets audio_packets_gsm_invalid_ptype[] = {
- /* RTP: SeqNo=1, TS=160 */
- {0.020000, 45,
- "\x80\x08\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44"
- "\xD4\x7C\xE3\xE9\x62\x50\x39\xF0\xF8\xB4\x68\xEA\x6C\x0E\x81\x1B"
- "\x56\x2A\xD5\xBC\x69\x9C\xD1\xF0\x66\x7A\xEC\x49\x7A\x33\x3D\x0A"
- "\xDE"
- },
-};
-
-struct rtp_packets audio_packets_g729[] = {
- /* RTP: SeqNo=1, TS=160 */
- {0.020000, 32,
- "\x80\x12\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44"
- "\xAF\xC2\x81\x40\x00\xFA\xCE\xA4\x21\x7C\xC5\xC3\x4F\xA5\x98\xF5"
- "\xB2\x95\xC4\xAD"
- },
-};
-
-struct rtp_packets audio_packets_pcma[] = {
- /* RTP: SeqNo=1, TS=160 */
- {0.020000, 172,
- "\x80\x08\x00\x01\x00\x00\x00\xA0\x11\x22\x33\x44"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- "\xD5\xA5\xA3\xA5\xD5\x25\x23\x25\xD5\xA5\xA3\xA5\xD5\x25\x23\x25"
- },
- /* RTP: SeqNo=26527, TS=232640 */
- {0.020000, 92,
- "\x80\x08\x67\x9f\x00\x03\x8c\xc0\x04\xaa\x67\x9f\xd5\xd5\xd5\xd5"
- "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5"
- "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5"
- "\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5\xd5"
- "\xd5\xd5\xd5\xd5\xd5\xd5\x55\x55\xd5\xd5\x55\x55\xd5\xd5\x55\x55"
- "\xd5\xd5\xd5\x55\x55\xd5\xd5\xd5\x55\x55\xd5\xd5"
- },
- /* RTP: SeqNo=26528, TS=232720 */
- {0.020000, 92,
- "\x80\x08\x67\xa0\x00\x03\x8d\x10\x04\xaa\x67\x9f\x55\xd5\xd5\x55"
- "\xd5\x55\xd5\xd5\xd5\x55\xd5\x55\xd5\xd5\x55\xd5\x55\xd5\x55\xd5"
- "\x55\x55\xd5\x55\xd5\xd5\x55\x55\x55\x55\x55\xd5\xd5\x55\xd5\xd5"
- "\xd5\x55\xd5\xd5\xd5\x55\x54\x55\xd5\xd5\x55\xd5\xd5\xd5\xd5\x55"
- "\x54\x55\xd5\x55\xd5\x55\x55\x55\x55\x55\xd5\xd5\xd5\xd5\xd5\xd4"
- "\xd5\x54\x55\xd5\xd4\xd5\x54\xd5\x55\xd5\xd5\xd5"
- },
-};
-
-
-
-static int audio_name_to_type(const char *name)
-{
- if (!strcasecmp(name, "gsm"))
- return 3;
-#ifdef HAVE_BCG729
- else if (!strcasecmp(name, "g729"))
- return 18;
-#endif
- else if (!strcasecmp(name, "pcma"))
- return 8;
- else if (!strcasecmp(name, "l16"))
- return 11;
- return -1;
-}
-
-int mgcp_get_trans_frame_size(void *state_, int nsamples, int dst);
-
-static int given_configured_endpoint(int in_samples, int out_samples,
- const char *srcfmt, const char *dstfmt,
- void **out_ctx, struct mgcp_endpoint **out_endp)
-{
- int rc;
- struct mgcp_rtp_end *dst_end;
- struct mgcp_rtp_end *src_end;
- struct mgcp_config *cfg;
- struct mgcp_trunk_config *tcfg;
- struct mgcp_endpoint *endp;
-
- cfg = mgcp_config_alloc();
- tcfg = talloc_zero(cfg, struct mgcp_trunk_config);
- endp = talloc_zero(tcfg, struct mgcp_endpoint);
-
- cfg->setup_rtp_processing_cb = mgcp_transcoding_setup;
- cfg->rtp_processing_cb = mgcp_transcoding_process_rtp;
- cfg->get_net_downlink_format_cb = mgcp_transcoding_net_downlink_format;
-
- tcfg->endpoints = endp;
- tcfg->number_endpoints = 1;
- tcfg->cfg = cfg;
- endp->tcfg = tcfg;
- endp->cfg = cfg;
- mgcp_initialize_endp(endp);
-
- dst_end = &endp->bts_end;
- dst_end->codec.payload_type = audio_name_to_type(dstfmt);
-
- src_end = &endp->net_end;
- src_end->codec.payload_type = audio_name_to_type(srcfmt);
-
- if (out_samples) {
- dst_end->codec.frame_duration_den = dst_end->codec.rate;
- dst_end->codec.frame_duration_num = out_samples;
- dst_end->frames_per_packet = 1;
- dst_end->force_output_ptime = 1;
- }
-
- rc = mgcp_transcoding_setup(endp, dst_end, src_end);
- if (rc < 0) {
- printf("setup failed: %s", strerror(-rc));
- abort();
- }
-
- *out_ctx = cfg;
- *out_endp = endp;
- return 0;
-}
-
-
-static int transcode_test(const char *srcfmt, const char *dstfmt,
- uint8_t *src_pkts, size_t src_pkt_size)
-{
- char buf[4096] = {0x80, 0};
- void *ctx;
-
- struct mgcp_rtp_end *dst_end;
- struct mgcp_process_rtp_state *state;
- struct mgcp_endpoint *endp;
- int in_size;
- const int in_samples = 160;
- int len, cont;
-
- printf("== Transcoding test ==\n");
- printf("converting %s -> %s\n", srcfmt, dstfmt);
-
- given_configured_endpoint(in_samples, 0, srcfmt, dstfmt, &ctx, &endp);
-
- dst_end = &endp->bts_end;
- state = dst_end->rtp_process_data;
- OSMO_ASSERT(state != NULL);
-
- in_size = mgcp_transcoding_get_frame_size(state, in_samples, 0);
- OSMO_ASSERT(sizeof(buf) >= in_size + 12);
-
- memcpy(buf, src_pkts, src_pkt_size);
-
- len = src_pkt_size;
-
- cont = mgcp_transcoding_process_rtp(endp, dst_end,
- buf, &len, sizeof(buf));
- if (cont < 0) {
- printf("Nothing encoded due: %s\n", strerror(-cont));
- talloc_free(ctx);
- return -1;
- }
-
- if (len < 24) {
- printf("encoded: %s\n", osmo_hexdump((unsigned char *)buf, len));
- } else {
- const char *str = osmo_hexdump((unsigned char *)buf, len);
- int i = 0;
- const int prefix = 4;
- const int cutlen = 48;
- int nchars = 0;
-
- printf("encoded:\n");
- do {
- nchars = printf("%*s%-.*s", prefix, "", cutlen, str + i);
- i += nchars - prefix;
- printf("\n");
- } while (nchars - prefix >= cutlen);
- }
- printf("counted: %d\n", cont);
- talloc_free(ctx);
- return 0;
-}
-
-static void test_rtp_seq_state(void)
-{
- char buf[4096];
- int len;
- int cont;
- void *ctx;
- struct mgcp_endpoint *endp;
- struct mgcp_process_rtp_state *state;
- struct rtp_hdr *hdr;
- uint32_t ts_no;
- uint16_t seq_no;
-
- given_configured_endpoint(160, 0, "pcma", "l16", &ctx, &endp);
- state = endp->bts_end.rtp_process_data;
- OSMO_ASSERT(!state->is_running);
- OSMO_ASSERT(state->next_seq == 0);
- OSMO_ASSERT(state->next_time == 0);
-
- /* initialize packet */
- len = audio_packets_pcma[0].len;
- memcpy(buf, audio_packets_pcma[0].data, len);
- cont = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, len);
- OSMO_ASSERT(cont >= 0);
- OSMO_ASSERT(state->is_running);
- OSMO_ASSERT(state->next_seq == 2);
- OSMO_ASSERT(state->next_time == 240);
-
- /* verify that the right timestamp was written */
- OSMO_ASSERT(len == audio_packets_pcma[0].len);
- hdr = (struct rtp_hdr *) &buf[0];
-
- memcpy(&ts_no, &hdr->timestamp, sizeof(ts_no));
- OSMO_ASSERT(htonl(ts_no) == 160);
- memcpy(&seq_no, &hdr->sequence, sizeof(seq_no));
- OSMO_ASSERT(htons(seq_no) == 1);
- /* Check the right sequence number is written */
- state->next_seq = 1234;
- len = audio_packets_pcma[0].len;
- memcpy(buf, audio_packets_pcma[0].data, len);
- cont = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, len);
- OSMO_ASSERT(cont >= 0);
- OSMO_ASSERT(len == audio_packets_pcma[0].len);
- hdr = (struct rtp_hdr *) &buf[0];
-
- memcpy(&seq_no, &hdr->sequence, sizeof(seq_no));
- OSMO_ASSERT(htons(seq_no) == 1234);
-
- talloc_free(ctx);
-}
-
-static void test_transcode_result(void)
-{
- char buf[4096];
- int len, res;
- void *ctx;
- struct mgcp_endpoint *endp;
- struct mgcp_process_rtp_state *state;
-
- {
- /* from GSM to PCMA and same ptime */
- given_configured_endpoint(160, 0, "gsm", "pcma", &ctx, &endp);
- state = endp->bts_end.rtp_process_data;
-
- /* result */
- len = audio_packets_gsm[0].len;
- memcpy(buf, audio_packets_gsm[0].data, len);
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(res == sizeof(struct rtp_hdr));
- OSMO_ASSERT(state->sample_cnt == 0);
-
- len = res;
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(res == -ENOMSG);
-
- talloc_free(ctx);
- }
-
- {
- /* from GSM to PCMA and same ptime */
- given_configured_endpoint(160, 160, "gsm", "pcma", &ctx, &endp);
- state = endp->bts_end.rtp_process_data;
-
- /* result */
- len = audio_packets_gsm[0].len;
- memcpy(buf, audio_packets_gsm[0].data, len);
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(res == sizeof(struct rtp_hdr));
- OSMO_ASSERT(state->sample_cnt == 0);
-
- len = res;
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(res == -EAGAIN);
-
- talloc_free(ctx);
- }
-
- {
- /* from PCMA to GSM and wrong different ptime */
- given_configured_endpoint(80, 160, "pcma", "gsm", &ctx, &endp);
- state = endp->bts_end.rtp_process_data;
-
- /* Add the first sample */
- len = audio_packets_pcma[1].len;
- memcpy(buf, audio_packets_pcma[1].data, len);
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(state->sample_cnt == 80);
- OSMO_ASSERT(state->next_time == 232640);
- OSMO_ASSERT(res < 0);
-
- /* Add the second sample and it should be consumable */
- len = audio_packets_pcma[2].len;
- memcpy(buf, audio_packets_pcma[2].data, len);
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(state->sample_cnt == 0);
- OSMO_ASSERT(state->next_time == 232640 + 80 + 160);
- OSMO_ASSERT(res == sizeof(struct rtp_hdr));
-
- talloc_free(ctx);
- }
-
- {
- /* from PCMA to GSM with a big time jump */
- struct rtp_hdr *hdr;
- uint32_t ts;
-
- given_configured_endpoint(80, 160, "pcma", "gsm", &ctx, &endp);
- state = endp->bts_end.rtp_process_data;
-
- /* Add the first sample */
- len = audio_packets_pcma[1].len;
- memcpy(buf, audio_packets_pcma[1].data, len);
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(state->sample_cnt == 80);
- OSMO_ASSERT(state->next_time == 232640);
- OSMO_ASSERT(state->next_seq == 26527);
- OSMO_ASSERT(res < 0);
-
- /* Add a skip to the packet to force a 'resync' */
- len = audio_packets_pcma[2].len;
- memcpy(buf, audio_packets_pcma[2].data, len);
- hdr = (struct rtp_hdr *) &buf[0];
- /* jump the time and add alignment error */
- ts = ntohl(hdr->timestamp) + 123 * 80 + 2;
- hdr->timestamp = htonl(ts);
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(res < 0);
- OSMO_ASSERT(state->sample_cnt == 80);
- OSMO_ASSERT(state->next_time == ts);
- OSMO_ASSERT(state->next_seq == 26527);
- /* TODO: this can create alignment errors */
-
-
- /* Now attempt to consume 160 samples */
- len = audio_packets_pcma[2].len;
- memcpy(buf, audio_packets_pcma[2].data, len);
- hdr = (struct rtp_hdr *) &buf[0];
- ts += 80;
- hdr->timestamp = htonl(ts);
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(res == 12);
- OSMO_ASSERT(state->sample_cnt == 0);
- OSMO_ASSERT(state->next_time == ts + 160);
- OSMO_ASSERT(state->next_seq == 26528);
-
- talloc_free(ctx);
- }
-}
-
-static void test_transcode_change(void)
-{
- char buf[4096] = {0x80, 0};
- void *ctx;
-
- struct mgcp_endpoint *endp;
- struct mgcp_process_rtp_state *state;
- struct rtp_hdr *hdr;
-
- int len, res;
-
- {
- /* from GSM to PCMA and same ptime */
- printf("Testing Initial L16->GSM, PCMA->GSM\n");
- given_configured_endpoint(160, 0, "l16", "gsm", &ctx, &endp);
- endp->net_end.alt_codec = endp->net_end.codec;
- endp->net_end.alt_codec.payload_type = audio_name_to_type("pcma");
- state = endp->bts_end.rtp_process_data;
-
- /* initial transcoding work */
- OSMO_ASSERT(state->src_fmt == AF_L16);
- OSMO_ASSERT(state->dst_fmt == AF_GSM);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 8);
- OSMO_ASSERT(endp->net_end.codec.payload_type == 11);
-
- /* result */
- len = audio_packets_pcma[0].len;
- memcpy(buf, audio_packets_pcma[0].data, len);
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- state = endp->bts_end.rtp_process_data;
- OSMO_ASSERT(res == sizeof(struct rtp_hdr));
- OSMO_ASSERT(state->sample_cnt == 0);
- OSMO_ASSERT(state->src_fmt == AF_PCMA);
- OSMO_ASSERT(state->dst_fmt == AF_GSM);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 11);
- OSMO_ASSERT(endp->net_end.codec.payload_type == 8);
-
- len = res;
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(res == -ENOMSG);
- OSMO_ASSERT(state == endp->bts_end.rtp_process_data);
-
-
- /* now check that comfort noise doesn't change anything */
- len = audio_packets_pcma[1].len;
- memcpy(buf, audio_packets_pcma[1].data, len);
- hdr = (struct rtp_hdr *) buf;
- hdr->payload_type = 12;
- res = mgcp_transcoding_process_rtp(endp, &endp->bts_end, buf, &len, ARRAY_SIZE(buf));
- OSMO_ASSERT(state == endp->bts_end.rtp_process_data);
- OSMO_ASSERT(state->sample_cnt == 80);
- OSMO_ASSERT(state->src_fmt == AF_PCMA);
- OSMO_ASSERT(state->dst_fmt == AF_GSM);
- OSMO_ASSERT(endp->net_end.alt_codec.payload_type == 11);
- OSMO_ASSERT(endp->net_end.codec.payload_type == 8);
-
- talloc_free(ctx);
- }
-}
-
-static int test_repacking(int in_samples, int out_samples, int no_transcode)
-{
- char buf[4096] = {0x80, 0};
- int cc;
- struct mgcp_endpoint *endp;
- void *ctx;
-
- struct mgcp_process_rtp_state *state;
- int in_cnt;
- int out_size;
- int in_size;
- uint32_t ts = 0;
- uint16_t seq = 0;
- const char *srcfmt = "pcma";
- const char *dstfmt = no_transcode ? "pcma" : "l16";
-
- printf("== Transcoding test ==\n");
- printf("converting %s -> %s\n", srcfmt, dstfmt);
-
- given_configured_endpoint(in_samples, out_samples, srcfmt, dstfmt, &ctx, &endp);
-
- state = endp->bts_end.rtp_process_data;
- OSMO_ASSERT(state != NULL);
-
- in_size = mgcp_transcoding_get_frame_size(state, in_samples, 0);
- OSMO_ASSERT(sizeof(buf) >= in_size + 12);
-
- out_size = mgcp_transcoding_get_frame_size(state, -1, 1);
- OSMO_ASSERT(sizeof(buf) >= out_size + 12);
-
- buf[1] = endp->net_end.codec.payload_type;
- *(uint16_t*)(buf+2) = htons(1);
- *(uint32_t*)(buf+4) = htonl(0);
- *(uint32_t*)(buf+8) = htonl(0xaabbccdd);
-
- for (in_cnt = 0; in_cnt < 16; in_cnt++) {
- int cont;
- int len;
-
- /* fake PCMA data */
- printf("generating %d %s input samples\n", in_samples, srcfmt);
- for (cc = 0; cc < in_samples; cc++)
- buf[12+cc] = cc;
-
- *(uint16_t*)(buf+2) = htonl(seq);
- *(uint32_t*)(buf+4) = htonl(ts);
-
- seq += 1;
- ts += in_samples;
-
- cc += 12; /* include RTP header */
-
- len = cc;
-
- do {
- cont = mgcp_transcoding_process_rtp(endp, &endp->bts_end,
- buf, &len, sizeof(buf));
- if (cont == -EAGAIN) {
- fprintf(stderr, "Got EAGAIN\n");
- break;
- }
-
- if (cont < 0) {
- printf("processing failed: %s", strerror(-cont));
- abort();
- }
-
- len -= 12; /* ignore RTP header */
-
- printf("got %d %s output frames (%d octets) count=%d\n",
- len / out_size, dstfmt, len, cont);
-
- len = cont;
- } while (len > 0);
- }
-
- talloc_free(ctx);
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- int rc;
- osmo_init_logging(&log_info);
-
- printf("=== Transcoding Good Cases ===\n");
-
- transcode_test("l16", "l16",
- (uint8_t *)audio_packets_l16[0].data,
- audio_packets_l16[0].len);
- transcode_test("l16", "gsm",
- (uint8_t *)audio_packets_l16[0].data,
- audio_packets_l16[0].len);
- transcode_test("l16", "pcma",
- (uint8_t *)audio_packets_l16[0].data,
- audio_packets_l16[0].len);
- transcode_test("gsm", "l16",
- (uint8_t *)audio_packets_gsm[0].data,
- audio_packets_gsm[0].len);
- transcode_test("gsm", "gsm",
- (uint8_t *)audio_packets_gsm[0].data,
- audio_packets_gsm[0].len);
- transcode_test("gsm", "pcma",
- (uint8_t *)audio_packets_gsm[0].data,
- audio_packets_gsm[0].len);
- transcode_test("pcma", "l16",
- (uint8_t *)audio_packets_pcma[0].data,
- audio_packets_pcma[0].len);
- transcode_test("pcma", "gsm",
- (uint8_t *)audio_packets_pcma[0].data,
- audio_packets_pcma[0].len);
- transcode_test("pcma", "pcma",
- (uint8_t *)audio_packets_pcma[0].data,
- audio_packets_pcma[0].len);
-
- printf("=== Transcoding Bad Cases ===\n");
-
- printf("Invalid size:\n");
- rc = transcode_test("gsm", "pcma",
- (uint8_t *)audio_packets_gsm_invalid_size[0].data,
- audio_packets_gsm_invalid_size[0].len);
- OSMO_ASSERT(rc < 0);
-
- printf("Invalid data:\n");
- rc = transcode_test("gsm", "pcma",
- (uint8_t *)audio_packets_gsm_invalid_data[0].data,
- audio_packets_gsm_invalid_data[0].len);
- OSMO_ASSERT(rc < 0);
-
- printf("Invalid payload type:\n");
- rc = transcode_test("gsm", "pcma",
- (uint8_t *)audio_packets_gsm_invalid_ptype[0].data,
- audio_packets_gsm_invalid_ptype[0].len);
- OSMO_ASSERT(rc == 0);
-
- printf("=== Repacking ===\n");
-
- test_repacking(160, 160, 0);
- test_repacking(160, 160, 1);
- test_repacking(160, 80, 0);
- test_repacking(160, 80, 1);
- test_repacking(160, 320, 0);
- test_repacking(160, 320, 1);
- test_repacking(160, 240, 0);
- test_repacking(160, 240, 1);
- test_repacking(160, 100, 0);
- test_repacking(160, 100, 1);
- test_rtp_seq_state();
- test_transcode_result();
- test_transcode_change();
-
- return 0;
-}
-
diff --git a/tests/mgcp/mgcp_transcoding_test.ok b/tests/mgcp/mgcp_transcoding_test.ok
deleted file mode 100644
index 387cfd275..000000000
--- a/tests/mgcp/mgcp_transcoding_test.ok
+++ /dev/null
@@ -1,539 +0,0 @@
-=== Transcoding Good Cases ===
-== Transcoding test ==
-converting l16 -> l16
-encoded:
- 80 0b 00 01 00 00 00 a0 11 22 33 44 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed 00 00 40 13
- 5a 9e 40 13 00 00 bf ed a5 62 bf ed
-counted: 0
-== Transcoding test ==
-converting l16 -> gsm
-encoded:
- 80 0b 00 01 00 00 00 a0 11 22 33 44 d4 7c e3 e9
- 62 50 39 f0 f8 b4 68 ea 6c 0e 81 1b 56 2a d5 bc
- 69 9c d1 f0 66 7a ec 49 7a 33 3d 0a de
-counted: 12
-== Transcoding test ==
-converting l16 -> pcma
-encoded:
- 80 0b 00 01 00 00 00 a0 11 22 33 44 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25
-counted: 12
-== Transcoding test ==
-converting gsm -> l16
-encoded:
- 80 03 00 01 00 00 00 a0 11 22 33 44 00 00 54 00
- 59 f0 34 20 c4 c8 b9 f8 e2 18 f1 e8 f2 28 f0 e0
- 46 08 4f 80 2c a0 a9 c8 80 00 c0 58 3f 80 63 c0
- 24 b8 fa b8 f6 88 0b a0 c8 70 a8 b0 c8 c0 3b a8
- 66 a0 2e 38 d1 f8 98 98 aa 18 e8 30 26 a0 37 40
- 37 e8 17 00 ee 50 b7 80 b1 88 de 28 18 40 45 b0
- 4f 48 21 d8 df 78 ae 68 ab 98 d6 b8 18 18 48 90
- 4e 70 27 40 e8 10 b5 b0 ac 80 d4 60 14 50 48 48
- 50 10 2a 00 ec 08 ba 00 af 58 d1 c0 10 60 45 c8
- 54 10 30 78 f1 a8 bb 18 ad 48 ce 30 0a e8 3f 30
- 4f 10 32 18 f6 18 bf 20 ac 30 cd 80 0b d0 43 d8
- 55 e0 34 a0 f5 78 bc 98 ad 98 cd c8 0a 80 40 58
- 51 c0 35 40 f9 60 c1 68 ac c8 cb 38 08 00 40 98
- 51 e0 34 d8 fa 28 c2 f0 ae 40 c7 70 02 d0 3c a8
- 54 78 38 a0 fc 68 c2 08 ad 50 c7 78 01 60 39 c0
- 51 38 3a e8 00 e8 c6 38 ab d8 c4 00 fe 08 39 18
- 50 30 39 50 01 d8 ca 70 b1 80 c4 c8 fc 58 36 40
- 51 d8 3b 08 02 80 c8 58 b0 60 c5 a8 fb d0 33 e8
- 4e 80 3c e0 06 10 cb 90 ae 48 c2 60 f9 58 34 08
- 4d a0 3a a8 06 48 cf 80 b4 60 c3 e8 f7 90 30 18
- 4d a0 3b 98 07 90 cf 18 b4 68 c4 88
-counted: 12
-== Transcoding test ==
-converting gsm -> gsm
-encoded:
- 80 03 00 01 00 00 00 a0 11 22 33 44 d4 7c e3 e9
- 62 50 39 f0 f8 b4 68 ea 6c 0e 81 1b 56 2a d5 bc
- 69 9c d1 f0 66 7a ec 49 7a 33 3d 0a de
-counted: 0
-== Transcoding test ==
-converting gsm -> pcma
-encoded:
- 80 03 00 01 00 00 00 a0 11 22 33 44 d5 a0 a3 bf
- 38 24 08 19 1e 1b a4 a6 b3 20 2a 3a ba ad b7 60
- 17 92 3e 20 3e b8 ac b2 32 2c 20 02 b6 be be 82
- 04 27 26 35 8d a4 a6 b5 35 21 20 31 8d a7 a6 b6
- 02 27 21 30 81 a7 a1 b0 06 24 21 32 85 a4 a0 bd
- 19 24 21 3d 90 ba a6 bc 16 25 21 3c 92 a5 a0 bf
- 10 25 21 3c 90 a5 a1 bf 6f 3a 21 3f 95 a5 a1 bf
- 62 3b 21 39 f3 bb a0 b9 79 3b 21 39 c3 b9 a1 b8
- db 39 20 3b 4a b9 a1 b9 c8 3f 26 38 78 be a1 b8
- f1 3e 26 38 65 bc a6 bb ed 3f 21 3b 6f bf a6 b8
- ec 3d 27 3b 15 bd a6 b8 eb 3d 27 38
-counted: 12
-== Transcoding test ==
-converting pcma -> l16
-encoded:
- 80 08 00 01 00 00 00 a0 11 22 33 44 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00 00 08 42 00
- 5a 00 42 00 00 08 be 00 a6 00 be 00
-counted: 12
-== Transcoding test ==
-converting pcma -> gsm
-encoded:
- 80 08 00 01 00 00 00 a0 11 22 33 44 d4 b9 f4 5d
- d9 50 5a e1 a0 cd 76 ea 52 0e 87 53 ad d4 ea a2
- 0a 63 ca e9 60 79 e2 2a 25 d2 c0 f3 39
-counted: 12
-== Transcoding test ==
-converting pcma -> pcma
-encoded:
- 80 08 00 01 00 00 00 a0 11 22 33 44 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25 d5 a5 a3 a5
- d5 25 23 25 d5 a5 a3 a5 d5 25 23 25
-counted: 0
-=== Transcoding Bad Cases ===
-Invalid size:
-== Transcoding test ==
-converting gsm -> pcma
-Nothing encoded due: No message of desired type
-Invalid data:
-== Transcoding test ==
-converting gsm -> pcma
-Nothing encoded due: No message of desired type
-Invalid payload type:
-== Transcoding test ==
-converting gsm -> pcma
-encoded:
- 80 08 00 01 00 00 00 a0 11 22 33 44 d5 a0 a3 bf
- 38 24 08 19 1e 1b a4 a6 b3 20 2a 3a ba ad b7 60
- 17 92 3e 20 3e b8 ac b2 32 2c 20 02 b6 be be 82
- 04 27 26 35 8d a4 a6 b5 35 21 20 31 8d a7 a6 b6
- 02 27 21 30 81 a7 a1 b0 06 24 21 32 85 a4 a0 bd
- 19 24 21 3d 90 ba a6 bc 16 25 21 3c 92 a5 a0 bf
- 10 25 21 3c 90 a5 a1 bf 6f 3a 21 3f 95 a5 a1 bf
- 62 3b 21 39 f3 bb a0 b9 79 3b 21 39 c3 b9 a1 b8
- db 39 20 3b 4a b9 a1 b9 c8 3f 26 38 78 be a1 b8
- f1 3e 26 38 65 bc a6 bb ed 3f 21 3b 6f bf a6 b8
- ec 3d 27 3b 15 bd a6 b8 eb 3d 27 38
-counted: 12
-=== Repacking ===
-== Transcoding test ==
-converting pcma -> l16
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-generating 160 pcma input samples
-got 2 l16 output frames (320 octets) count=12
-== Transcoding test ==
-converting pcma -> pcma
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-generating 160 pcma input samples
-got 2 pcma output frames (160 octets) count=12
-== Transcoding test ==
-converting pcma -> l16
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-== Transcoding test ==
-converting pcma -> pcma
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-== Transcoding test ==
-converting pcma -> l16
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 l16 output frames (640 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 l16 output frames (640 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 l16 output frames (640 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 l16 output frames (640 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 l16 output frames (640 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 l16 output frames (640 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 l16 output frames (640 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 l16 output frames (640 octets) count=12
-== Transcoding test ==
-converting pcma -> pcma
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 pcma output frames (320 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 pcma output frames (320 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 pcma output frames (320 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 pcma output frames (320 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 pcma output frames (320 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 pcma output frames (320 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 pcma output frames (320 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 4 pcma output frames (320 octets) count=12
-== Transcoding test ==
-converting pcma -> l16
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 l16 output frames (480 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 l16 output frames (480 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 l16 output frames (480 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 l16 output frames (480 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 l16 output frames (480 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 l16 output frames (480 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 l16 output frames (480 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 l16 output frames (480 octets) count=12
-== Transcoding test ==
-converting pcma -> pcma
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 pcma output frames (240 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 pcma output frames (240 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 pcma output frames (240 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 pcma output frames (240 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 pcma output frames (240 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 pcma output frames (240 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 pcma output frames (240 octets) count=12
-generating 160 pcma input samples
-generating 160 pcma input samples
-got 3 pcma output frames (240 octets) count=12
-== Transcoding test ==
-converting pcma -> l16
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-generating 160 pcma input samples
-got 1 l16 output frames (160 octets) count=12
-got 1 l16 output frames (160 octets) count=12
-== Transcoding test ==
-converting pcma -> pcma
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-generating 160 pcma input samples
-got 1 pcma output frames (80 octets) count=12
-got 1 pcma output frames (80 octets) count=12
-Testing Initial L16->GSM, PCMA->GSM
diff --git a/tests/mgcp/mgcpgw_client_test.c b/tests/mgcp/mgcpgw_client_test.c
deleted file mode 100644
index 20e9b78da..000000000
--- a/tests/mgcp/mgcpgw_client_test.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
- * All Rights Reserved
- *
- * Author: Neels Hofmeyr
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <string.h>
-
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/application.h>
-#include <openbsc/mgcp.h>
-#include <openbsc/mgcpgw_client.h>
-
-void *ctx;
-
-#define buf_len 4096
-
-#if 0
-static struct msgb *from_hex(const char *hex)
-{
- struct msgb *msg = msgb_alloc(buf_len, "mgcpgw_test_from_hex");
- unsigned int l = osmo_hexparse(hex, msg->data, buf_len);
- msg->l2h = msgb_put(msg, l);
- return msg;
-}
-
-static struct msgb *mgcp_from_str(const char *head, const char *params)
-{
- struct msgb *msg = msgb_alloc(buf_len, "mgcp_from_str");
- unsigned int l;
- char *data;
- l = strlen(head);
- msg->l2h = msgb_put(msg, l);
- data = (char*)msgb_l2(msg);
- strncpy(data, head, l);
-
- data = (char*)msgb_put(msg, 1);
- *data = '\n';
-
- l = strlen(params);
- data = (char*)msgb_put(msg, l);
- strncpy(data, params, l);
-
- return msg;
-}
-#endif
-
-static struct msgb *from_str(const char *str)
-{
- struct msgb *msg = msgb_alloc(buf_len, "from_str");
- unsigned int l = strlen(str);
- char *data;
- msg->l2h = msgb_put(msg, l);
- data = (char*)msgb_l2(msg);
- strncpy(data, str, l);
- return msg;
-}
-
-static struct mgcpgw_client_conf conf;
-struct mgcpgw_client *mgcp = NULL;
-
-static void reply_to(mgcp_trans_id_t trans_id, int code, const char *comment,
- int conn_id, const char *params)
-{
- static char compose[4096 - 128];
- int len;
-
- len = snprintf(compose, sizeof(compose),
- "%d %u %s\r\nI: %d\n\n%s",
- code, trans_id, comment, conn_id, params);
- OSMO_ASSERT(len < sizeof(compose));
- OSMO_ASSERT(len > 0);
-
- printf("composed response:\n-----\n%s\n-----\n",
- compose);
- mgcpgw_client_rx(mgcp, from_str(compose));
-}
-
-void test_response_cb(struct mgcp_response *response, void *priv)
-{
- OSMO_ASSERT(priv == mgcp);
- mgcp_response_parse_params(response);
-
- printf("response cb received:\n"
- " head.response_code = %d\n"
- " head.trans_id = %u\n"
- " head.comment = %s\n"
- " audio_port = %u\n",
- response->head.response_code,
- response->head.trans_id,
- response->head.comment,
- response->audio_port
- );
-}
-
-mgcp_trans_id_t dummy_mgcp_send(struct msgb *msg)
-{
- mgcp_trans_id_t trans_id;
- trans_id = msg->cb[MSGB_CB_MGCP_TRANS_ID];
- char *end;
-
- OSMO_ASSERT(mgcpgw_client_pending_add(mgcp, trans_id, test_response_cb, mgcp));
-
- end = (char*)msgb_put(msg, 1);
- *end = '\0';
- printf("composed:\n-----\n%s\n-----\n",
- (char*)msgb_l2(msg));
-
- talloc_free(msg);
- return trans_id;
-}
-
-void test_crcx(void)
-{
- struct msgb *msg;
- mgcp_trans_id_t trans_id;
-
- printf("\n===== %s =====\n", __func__);
-
- if (mgcp)
- talloc_free(mgcp);
- mgcp = mgcpgw_client_init(ctx, &conf);
-
- msg = mgcp_msg_crcx(mgcp, 23, 42, MGCP_CONN_LOOPBACK);
- trans_id = dummy_mgcp_send(msg);
-
- reply_to(trans_id, 200, "OK", 1,
- "v=0\r\n"
- "o=- 1 23 IN IP4 10.9.1.120\r\n"
- "s=-\r\n"
- "c=IN IP4 10.9.1.120\r\n"
- "t=0 0\r\n"
- "m=audio 16002 RTP/AVP 98\r\n"
- "a=rtpmap:98 AMR/8000\r\n"
- "a=ptime:20\r\n");
-}
-
-int main(int argc, char **argv)
-{
- ctx = talloc_named_const(NULL, 1, "mgcpgw_client_test");
- msgb_talloc_ctx_init(ctx, 0);
- osmo_init_logging(&log_info);
-
- mgcpgw_client_conf_init(&conf);
-
- test_crcx();
-
- printf("Done\n");
- fprintf(stderr, "Done\n");
- return EXIT_SUCCESS;
-}
diff --git a/tests/mgcp/mgcpgw_client_test.err b/tests/mgcp/mgcpgw_client_test.err
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/mgcp/mgcpgw_client_test.err
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/mgcp/mgcpgw_client_test.ok b/tests/mgcp/mgcpgw_client_test.ok
deleted file mode 100644
index d35f2d6b0..000000000
--- a/tests/mgcp/mgcpgw_client_test.ok
+++ /dev/null
@@ -1,31 +0,0 @@
-
-===== test_crcx =====
-composed:
------
-CRCX 1 17@mgw MGCP 1.0
-C: 2a
-L: p:20, a:AMR, nt:IN
-M: loopback
-
------
-composed response:
------
-200 1 OK
-I: 1
-
-v=0
-o=- 1 23 IN IP4 10.9.1.120
-s=-
-c=IN IP4 10.9.1.120
-t=0 0
-m=audio 16002 RTP/AVP 98
-a=rtpmap:98 AMR/8000
-a=ptime:20
-
------
-response cb received:
- head.response_code = 200
- head.trans_id = 1
- head.comment = OK
- audio_port = 16002
-Done
diff --git a/tests/mm_auth/Makefile.am b/tests/mm_auth/Makefile.am
deleted file mode 100644
index cb351988b..000000000
--- a/tests/mm_auth/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBCRYPTO_CFLAGS) \
- $(NULL)
-
-noinst_PROGRAMS = \
- mm_auth_test \
- $(NULL)
-
-EXTRA_DIST = \
- mm_auth_test.ok \
- $(NULL)
-
-mm_auth_test_SOURCES = \
- mm_auth_test.c \
- $(NULL)
-
-mm_auth_test_LDFLAGS = \
- -Wl,--wrap=db_get_authinfo_for_subscr \
- -Wl,--wrap=db_get_lastauthtuple_for_subscr \
- -Wl,--wrap=db_sync_lastauthtuple_for_subscr \
- $(NULL)
-
-mm_auth_test_LDADD = \
- $(top_builddir)/src/libmsc/libmsc.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(NULL)
diff --git a/tests/mm_auth/mm_auth_test.c b/tests/mm_auth/mm_auth_test.c
deleted file mode 100644
index f620385f9..000000000
--- a/tests/mm_auth/mm_auth_test.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <stdbool.h>
-
-#include <osmocom/core/application.h>
-#include <osmocom/core/logging.h>
-
-#include <openbsc/debug.h>
-#include <openbsc/gsm_data.h>
-#include <openbsc/gsm_subscriber.h>
-#include <openbsc/auth.h>
-
-#define min(A,B) ((A)>(B)? (B) : (A))
-
-#if 0
-static char *auth_tuple_str(struct gsm_auth_tuple *atuple)
-{
- static char buf[256];
- char *pos = buf;
- int len = sizeof(buf);
- int l;
-
-#define print2buf(FMT, args...) do {\
- l = snprintf(pos, len, FMT, ## args); \
- pos += l;\
- len -= l;\
- } while (0)
-
- print2buf("gsm_auth_tuple {\n");
- print2buf(" .use_count = %d\n", atuple->use_count);
- print2buf(" .key_seq = %d\n", atuple->key_seq);
- print2buf(" .rand = %s\n", osmo_hexdump(atuple->vec.rand, sizeof(atuple->vec.rand)));
- print2buf(" .sres = %s\n", osmo_hexdump(atuple->vec.sres, sizeof(atuple->vec.sres)));
- print2buf(" .kc = %s\n", osmo_hexdump(atuple->vec.kc, sizeof(atuple->vec.kc)));
- print2buf("}\n");
-#undef print2buf
-
- return buf;
-}
-
-static bool auth_tuple_is(struct gsm_auth_tuple *atuple,
- const char *expect_str)
-{
- int l, l1, l2;
- int i;
- char *tuple_str = auth_tuple_str(atuple);
- bool same = (strcmp(expect_str, tuple_str) == 0);
- if (!same) {
- l1 = strlen(expect_str);
- l2 = strlen(tuple_str);
- printf("Expected %d:\n%s\nGot %d:\n%s\n",
- l1, expect_str, l2, tuple_str);
- l = min(l1, l2);
- for (i = 0; i < l; i++) {
- if (expect_str[i] != tuple_str[i]) {
- printf("Difference at pos %d"
- " (%c 0x%0x != %c 0x%0x)\n",
- i, expect_str[i], expect_str[i],
- tuple_str[i], tuple_str[i]);
- break;
- }
- }
- }
- return same;
-}
-#endif
-
-int test_get_authinfo_rc = 0;
-struct gsm_auth_info test_auth_info = {0};
-struct gsm_auth_info default_auth_info = {
- .auth_algo = AUTH_ALGO_COMP128v1,
- .a3a8_ki_len = 16,
- .a3a8_ki = { 0 }
-};
-
-
-int main(void)
-{
- osmo_init_logging(&log_info);
- log_set_log_level(osmo_stderr_target, LOGL_INFO);
-
- printf("Nothing being tested!\n");
-
- /* TODO auth_get_tuple_for_subscr() no longer exists ... test auth somehow?? */
- return 0;
-}
diff --git a/tests/mm_auth/mm_auth_test.ok b/tests/mm_auth/mm_auth_test.ok
deleted file mode 100644
index 37b1289be..000000000
--- a/tests/mm_auth/mm_auth_test.ok
+++ /dev/null
@@ -1 +0,0 @@
-Nothing being tested!
diff --git a/tests/msc_vlr/Makefile.am b/tests/msc_vlr/Makefile.am
deleted file mode 100644
index a2b0f0889..000000000
--- a/tests/msc_vlr/Makefile.am
+++ /dev/null
@@ -1,160 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBSMPP34_CFLAGS) \
- $(LIBCRYPTO_CFLAGS) \
- $(LIBOSMOVTY_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(LIBOSMOSIGTRAN_CFLAGS) \
- $(NULL)
-
-noinst_HEADERS = \
- msc_vlr_tests.h \
- $(NULL)
-
-EXTRA_DIST = \
- msc_vlr_test_no_authen.ok \
- msc_vlr_test_no_authen.err \
- msc_vlr_test_gsm_authen.ok \
- msc_vlr_test_gsm_authen.err \
- msc_vlr_test_gsm_ciph.ok \
- msc_vlr_test_gsm_ciph.err \
- msc_vlr_test_umts_authen.ok \
- msc_vlr_test_umts_authen.err \
- msc_vlr_test_hlr_reject.ok \
- msc_vlr_test_hlr_reject.err \
- msc_vlr_test_hlr_timeout.ok \
- msc_vlr_test_hlr_timeout.err \
- msc_vlr_test_ms_timeout.ok \
- msc_vlr_test_ms_timeout.err \
- msc_vlr_test_reject_concurrency.ok \
- msc_vlr_test_reject_concurrency.err \
- msc_vlr_test_rest.ok \
- msc_vlr_test_rest.err \
- $(NULL)
-
-LDADD = \
- $(top_builddir)/src/libmsc/libmsc.a \
- $(top_builddir)/src/libcommon-cs/libcommon-cs.a \
- $(top_builddir)/src/libvlr/libvlr.a \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libmgcp/libmgcp.a \
- $(top_builddir)/tests/libiudummy/libiudummy.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBSMPP34_LIBS) \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBCRYPTO_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- $(LIBOSMOSIGTRAN_LIBS) \
- -ldbi \
- -lrt \
- $(NULL)
-
-LDFLAGS = \
- -Wl,--wrap=gsup_client_create \
- -Wl,--wrap=gsup_client_send \
- -Wl,--wrap=a_iface_tx_dtap \
- -Wl,--wrap=a_iface_tx_paging \
- -Wl,--wrap=ranap_iu_tx \
- -Wl,--wrap=ranap_iu_page_cs \
- -Wl,--wrap=msc_stop_paging \
- -Wl,--wrap=gsm340_gen_scts \
- -Wl,--wrap=RAND_bytes \
- $(NULL)
-
-noinst_PROGRAMS = \
- msc_vlr_test_no_authen \
- msc_vlr_test_gsm_authen \
- msc_vlr_test_gsm_ciph \
- msc_vlr_test_umts_authen \
- msc_vlr_test_hlr_reject \
- msc_vlr_test_hlr_timeout \
- msc_vlr_test_ms_timeout \
- msc_vlr_test_reject_concurrency \
- msc_vlr_test_rest \
- $(NULL)
-
-msc_vlr_test_no_authen_SOURCES = \
- msc_vlr_test_no_authen.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_no_authen_LDADD = $(LDADD)
-msc_vlr_test_no_authen_LDFLAGS = $(LDFLAGS)
-
-msc_vlr_test_gsm_authen_SOURCES = \
- msc_vlr_test_gsm_authen.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_gsm_authen_LDADD = $(LDADD)
-msc_vlr_test_gsm_authen_LDFLAGS = $(LDFLAGS)
-
-msc_vlr_test_gsm_ciph_SOURCES = \
- msc_vlr_test_gsm_ciph.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_gsm_ciph_LDADD = $(LDADD)
-msc_vlr_test_gsm_ciph_LDFLAGS = $(LDFLAGS)
-
-msc_vlr_test_umts_authen_SOURCES = \
- msc_vlr_test_umts_authen.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_umts_authen_LDADD = $(LDADD)
-msc_vlr_test_umts_authen_LDFLAGS = $(LDFLAGS)
-
-msc_vlr_test_hlr_reject_SOURCES = \
- msc_vlr_test_hlr_reject.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_hlr_reject_LDADD = $(LDADD)
-msc_vlr_test_hlr_reject_LDFLAGS = $(LDFLAGS)
-
-msc_vlr_test_hlr_timeout_SOURCES = \
- msc_vlr_test_hlr_timeout.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_hlr_timeout_LDADD = $(LDADD)
-msc_vlr_test_hlr_timeout_LDFLAGS = $(LDFLAGS)
-
-msc_vlr_test_ms_timeout_SOURCES = \
- msc_vlr_test_ms_timeout.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_ms_timeout_LDADD = $(LDADD)
-msc_vlr_test_ms_timeout_LDFLAGS = $(LDFLAGS)
-
-msc_vlr_test_reject_concurrency_SOURCES = \
- msc_vlr_test_reject_concurrency.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_reject_concurrency_LDADD = $(LDADD)
-msc_vlr_test_reject_concurrency_LDFLAGS = $(LDFLAGS)
-
-msc_vlr_test_rest_SOURCES = \
- msc_vlr_test_rest.c \
- msc_vlr_tests.c \
- $(NULL)
-msc_vlr_test_rest_LDADD = $(LDADD)
-msc_vlr_test_rest_LDFLAGS = $(LDFLAGS)
-
-.PHONY: update_exp
-update_exp:
- $(builddir)/msc_vlr_test_no_authen >$(srcdir)/msc_vlr_test_no_authen.ok 2>$(srcdir)/msc_vlr_test_no_authen.err
- $(builddir)/msc_vlr_test_gsm_authen >$(srcdir)/msc_vlr_test_gsm_authen.ok 2>$(srcdir)/msc_vlr_test_gsm_authen.err
- $(builddir)/msc_vlr_test_gsm_ciph >$(srcdir)/msc_vlr_test_gsm_ciph.ok 2>$(srcdir)/msc_vlr_test_gsm_ciph.err
- $(builddir)/msc_vlr_test_umts_authen >$(srcdir)/msc_vlr_test_umts_authen.ok 2>$(srcdir)/msc_vlr_test_umts_authen.err
- $(builddir)/msc_vlr_test_hlr_reject >$(srcdir)/msc_vlr_test_hlr_reject.ok 2>$(srcdir)/msc_vlr_test_hlr_reject.err
- $(builddir)/msc_vlr_test_hlr_timeout >$(srcdir)/msc_vlr_test_hlr_timeout.ok 2>$(srcdir)/msc_vlr_test_hlr_timeout.err
- $(builddir)/msc_vlr_test_ms_timeout >$(srcdir)/msc_vlr_test_ms_timeout.ok 2>$(srcdir)/msc_vlr_test_ms_timeout.err
- $(builddir)/msc_vlr_test_reject_concurrency >$(srcdir)/msc_vlr_test_reject_concurrency.ok 2>$(srcdir)/msc_vlr_test_reject_concurrency.err
- $(builddir)/msc_vlr_test_rest >$(srcdir)/msc_vlr_test_rest.ok 2>$(srcdir)/msc_vlr_test_rest.err
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.c b/tests/msc_vlr/msc_vlr_test_gsm_authen.c
deleted file mode 100644
index 22e549b2f..000000000
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.c
+++ /dev/null
@@ -1,888 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
- auth_request_sent = false;
- auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b";
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886089910070000006402");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts with a CM Service Accept");
- gsup_expect_tx(NULL);
- ms_sends_msg("0554" "20bde240" /* 2nd vector's sres, s.a. */);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 46071\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- OSMO_ASSERT(dtap_tx_confirmed);
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_imsi(imsi);
- paging_sent = false;
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response, and VLR sends Auth Request with third key");
- auth_request_sent = false;
- auth_request_expect_rand = "e7c03ba7cf0e2fde82b2dc4d63077d42";
- ms_sends_msg("06270703305882089910070000006402");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and sends pending SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05806470f1" /* originating address 46071 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("0554" "a29514ae" /* 3rd vector's sres, s.a. */);
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_gsm_authen_tmsi()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- net->authentication_required = true;
- net->vlr->cfg.assign_tmsi = true;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b"
- "2104" "20bde240" "2208" "07fa7502e07e1c00"
- "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42"
- "2104" "a29514ae" "2208" "e2b234f807886400"
- "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
- "2104" "5afc8d72" "2208" "2392f14f709ae000"
- "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject");
- gsup_rx("06010809710000004026f0", NULL);
- EXPECT_ACCEPTED(false);
-
- thwart_rx_non_initial_requests();
-
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the new TMSI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x");
- vlr_subscr_put(vsub);
-
- BTW("after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector");
- auth_request_sent = false;
- auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b";
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886" "05f4" "03020100");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts with a CM Service Accept");
- gsup_expect_tx(NULL);
- ms_sends_msg("0554" "20bde240" /* 2nd vector's sres, s.a. */);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 46071\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- OSMO_ASSERT(dtap_tx_confirmed);
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_tmsi(0x03020100);
- paging_sent = false;
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key");
- auth_request_sent = false;
- auth_request_expect_rand = "e7c03ba7cf0e2fde82b2dc4d63077d42";
- ms_sends_msg("06270703305882" "05f4" "03020100");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and sends pending SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05806470f1" /* originating address 46071 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("0554" "a29514ae" /* 3rd vector's sres, s.a. */);
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- /* TODO: when the subscriber detaches, the vlr_subscr gets
- * deallocated and we no longer know the TMSI. This case is covered by
- * test_lu_unknown_tmsi(), so here I'd like to still have the TMSI.
- BTW("subscriber detaches, using TMSI");
- ms_sends_msg("050130" "05f4" "03020100");
- EXPECT_CONN_COUNT(0);
- */
-
- BTW("subscriber sends LU Request, this time with the TMSI");
- btw("Location Update request causes an Auth Req to MS");
- lu_result_sent = RES_NONE;
- auth_request_sent = false;
- auth_request_expect_rand = "fa8f20b781b5881329d4fea26b1a3c51";
- ms_sends_msg("050802008168000130" "05f4" "03020100");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05545afc8d72");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x07060504);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x07060504, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- btw("subscriber has the new TMSI");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x07060504);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == 0x07060504, "0x%08x");
- vlr_subscr_put(vsub);
-
- BTW("subscriber detaches, using new TMSI");
- ms_sends_msg("050130" "05f4" "07060504");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_gsm_authen_imei()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- net->authentication_required = true;
- net->vlr->cfg.check_imei_rqd = true;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b"
- "2104" "20bde240" "2208" "07fa7502e07e1c00"
- "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42"
- "2104" "a29514ae" "2208" "e2b234f807886400"
- "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
- "2104" "5afc8d72" "2208" "2392f14f709ae000"
- "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject");
- gsup_rx("06010809710000004026f0", NULL);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS");
- dtap_expect_tx("051802");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("We will only do business when the IMEI is known");
- EXPECT_CONN_COUNT(1);
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(vsub->imei[0], == 0, "%d");
- vlr_subscr_put(vsub);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS replies with an Identity Response");
- ms_sends_msg("0559084a32244332244332");
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the IMEI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d");
- vlr_subscr_put(vsub);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_gsm_authen_tmsi_imei()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- net->authentication_required = true;
- net->vlr->cfg.assign_tmsi = true;
- net->vlr->cfg.check_imei_rqd = true;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b"
- "2104" "20bde240" "2208" "07fa7502e07e1c00"
- "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42"
- "2104" "a29514ae" "2208" "e2b234f807886400"
- "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
- "2104" "5afc8d72" "2208" "2392f14f709ae000"
- "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject");
- gsup_rx("06010809710000004026f0", NULL);
- EXPECT_ACCEPTED(false);
-
- thwart_rx_non_initial_requests();
-
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS");
- dtap_expect_tx("051802");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("We will only do business when the IMEI is known");
- EXPECT_CONN_COUNT(1);
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(vsub->imei[0], == 0, "%d");
- vlr_subscr_put(vsub);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS replies with an Identity Response");
- ms_sends_msg("0559084a32244332244332");
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the IMEI and TMSI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x");
- vlr_subscr_put(vsub);
-
- BTW("subscriber detaches, using TMSI");
- ms_sends_msg("050130" "05f4" "03020100");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_gsm_milenage_authen()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000010650";
-
- comment_start();
-
- net->authentication_required = true;
- rx_from_ran = RAN_GERAN_A;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
- ms_sends_msg("0508" /* MM LU */
- "7" /* ciph key seq: no key available */
- "0" /* LU type: normal */
- "ffffff" "0000" /* LAI, LAC */
- "30" /* classmark 1: GSM phase 2 */
- "089910070000106005" /* IMSI */
- );
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* based on auc_3g:
- * K = 'EB215756028D60E3275E613320AEC880',
- * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308'
- * SQN = 0
- */
- auth_request_sent = false;
- auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d";
- auth_request_expect_autn = NULL;
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000000156f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d"
- /* TL sres TL kc */
- "2104" "9b36efdf" "2208" "059a4f668f6fbe39"
- /* TL 3G IK */
- "2310" "27497388b6cb044648f396aa155b95ef"
- /* TL 3G CK */
- "2410" "f64735036e5871319c679f4742a75ea1"
- /* TL AUTN */
- "2510" "8704f5ba55f30000d2ee44b22c8ea919"
- /* TL RES */
- "2708" "e229c19e791f2e41"
- "0362" "2010" "c187a53a5e6b9d573cac7c74451fd46d"
- "2104" "85aa3130" "2208" "d3d50a000bf04f6e"
- "2310" "1159ec926a50e98c034a6b7d7c9f418d"
- "2410" "df3a03d9ca5335641efc8e36d76cd20b"
- "2510" "1843a645b98d00005b2d666af46c45d9"
- "2708" "7db47cf7f81e4dc7"
- "0362" "2010" "efa9c29a9742148d5c9070348716e1bb"
- "2104" "69d5f9fb" "2208" "3df176f0c29f1a3d"
- "2310" "eb50e770ddcc3060101d2f43b6c2b884"
- "2410" "76542abce5ff9345b0e8947f4c6e019c"
- "2510" "f9375e6d41e1000096e7fe4ff1c27e39"
- "2708" "706f996719ba609c"
- ,NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0");
- ms_sends_msg("0554" "9b36efdf");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000000156f00804032443f2",
- "12010809710000000156f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
- auth_request_sent = false;
- auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
- auth_request_expect_autn = NULL;
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
- "03305886" /* classmark 2: GSM phase 2 */
- "089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts with a CM Service Accept");
- gsup_expect_tx(NULL);
- ms_sends_msg("0554" "85aa3130"); /* 2nd vector's sres, s.a. */
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 42342\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- OSMO_ASSERT(dtap_tx_confirmed);
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_imsi(imsi);
- paging_sent = false;
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response, and VLR sends Auth Request with third key");
- auth_request_sent = false;
- auth_request_expect_rand = "efa9c29a9742148d5c9070348716e1bb";
- auth_request_expect_autn = NULL;
- ms_sends_msg("062707"
- "03305886" /* classmark 2 */
- "089910070000106005" /* IMSI */);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and sends pending SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05802443f2" /* originating address 42342 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("0554" "69d5f9fb"); /* 3nd vector's sres, s.a. */
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130"
- "089910070000106005" /* IMSI */);
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_gsm_authen,
- test_gsm_authen_tmsi,
- test_gsm_authen_imei,
- test_gsm_authen_tmsi_imei,
- test_gsm_milenage_authen,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.err b/tests/msc_vlr/msc_vlr_test_gsm_authen.err
deleted file mode 100644
index e3f372cc4..000000000
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.err
+++ /dev/null
@@ -1,1946 +0,0 @@
-===== test_gsm_authen
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and...
-- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
-- ...expecting sres=20bde240
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 0
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts with a CM Service Accept
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: 20 bd e2 40
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-- a USSD request is serviced
- expecting USSD:
- Your extension is 46071
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:46071: MSISDN = 46071
-DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-- DTAP matches expected message
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-- MS replies with Paging Response, and VLR sends Auth Request with third key
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...
-- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
-- ...expecting sres=a29514ae
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and sends pending SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: a2 95 14 ae
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:46071 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_gsm_authen: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_gsm_authen_tmsi
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the new TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0xffffffff
- vsub->tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and...
-- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
-- ...expecting sres=20bde240
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 0
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts with a CM Service Accept
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: 20 bd e2 40
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-- a USSD request is serviced
- expecting USSD:
- Your extension is 46071
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:46071: MSISDN = 46071
-DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-- DTAP matches expected message
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0
- paging_expecting_tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-- MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(TMSI)=50462976
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...
-- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
-- ...expecting sres=a29514ae
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and sends pending SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: a2 95 14 ae
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:46071 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber sends LU Request, this time with the TMSI
-- Location Update request causes an Auth Req to MS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: is child of Subscr_Conn(50462976)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=3
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=3 auth_types=0x1 and...
-- ...rand=fa8f20b781b5881329d4fea26b1a3c51
-- ...expecting sres=5afc8d72
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 5afc8d72)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: 5a fc 8d 72
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(50462976)
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(50462976)
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(50462976)
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(50462976)
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(50462976)
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:46071, with TMSI 0x07060504
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:46071 usage increases to: 3
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x07060504
- vsub->tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(50462976)
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(50462976)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-- subscriber has the new TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0xffffffff
- vsub->tmsi == 0x07060504
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- subscriber detaches, using new TMSI
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(TMSI)=117835012
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_gsm_authen_tmsi: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_gsm_authen_imei
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- We will only do business when the IMEI is known
- llist_count(&net->subscr_conns) == 1
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->imei[0] == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS replies with an Identity Response
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
-DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423
-DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the IMEI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- strcmp(vsub->imei, "423423423423423") == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_gsm_authen_imei: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_gsm_authen_tmsi_imei
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- If the HLR were to send a GSUP _UPDATE_LOCATION_RESULT we'd still reject
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Event VLR_ULA_E_HLR_LU_RES not permitted
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
-DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- We will only do business when the IMEI is known
- llist_count(&net->subscr_conns) == 1
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->imei[0] == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS replies with an Identity Response
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
-DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423
-DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the IMEI and TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- strcmp(vsub->imei, "423423423423423") == 0
- vsub->tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- subscriber detaches, using TMSI
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(TMSI)=50462976
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_gsm_authen_tmsi_imei: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_gsm_milenage_authen
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL
-DMM LU/new-LAC: 0/0
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
-DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c
-DVLR GSUP rx 311: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000010650) Received 3 auth tuples
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
-- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
-- ...expecting sres=9b36efdf
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000010650: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000010650: MM GSM AUTHENTICATION RESPONSE (sres = 9b36efdf)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000010650) received res: 9b 36 ef df
-DVLR SUBSCR(IMSI:901700000010650) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2
-DVLR GSUP rx 17: 10010809710000000156f00804032443f2
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR IMSI:901700000010650 has MSISDN:42342
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0
-DVLR GSUP rx 11: 06010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:42342
-DREF VLR subscr MSISDN:42342 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000010650
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DREF VLR subscr MSISDN:42342 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1
-- sending GSM Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and...
-- ...rand=c187a53a5e6b9d573cac7c74451fd46d
-- ...expecting sres=85aa3130
-DREF VLR subscr MSISDN:42342 usage decreases to: 2
-DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:42342: MSC conn use - 1 == 1
- cm_service_result_sent == 0
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts with a CM Service Accept
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:42342: MM GSM AUTHENTICATION RESPONSE (sres = 85aa3130)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:42342) received res: 85 aa 31 30
-DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:42342
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:42342: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-- a USSD request is serviced
- expecting USSD:
- Your extension is 42342
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:42342: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:42342: MSISDN = 42342
-DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d
-- DTAP matches expected message
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:42342 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:42342 usage increases to: 3
-DMM Subscriber MSISDN:42342 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000010650, TMSI 0xffffffff, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:42342 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:42342 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
-- MS replies with Paging Response, and VLR sends Auth Request with third key
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000010650
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:42342 usage increases to: 4
-DREF VLR subscr MSISDN:42342 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2
-- sending GSM Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x3 and...
-- ...rand=efa9c29a9742148d5c9070348716e1bb
-- ...expecting sres=69d5f9fb
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:42342: MSC conn use - 1 == 1
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and sends pending SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:42342: MM GSM AUTHENTICATION RESPONSE (sres = 69d5f9fb)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:42342) received res: 69 d5 f9 fb
-DVLR SUBSCR(MSISDN:42342) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:42342 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:42342 usage increases to: 5
-DREF MSISDN:42342: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:42342: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:42342 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:42342: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:42342: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:42342: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
-DREF VLR subscr MSISDN:42342 usage decreases to: 2
-DREF MSISDN:42342: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DMM Subscriber MSISDN:42342 DETACHED
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:42342
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_gsm_milenage_authen: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_authen.ok b/tests/msc_vlr/msc_vlr_test_gsm_authen.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_gsm_authen.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c b/tests/msc_vlr/msc_vlr_test_gsm_ciph.c
deleted file mode 100644
index 6b5017b78..000000000
--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.c
+++ /dev/null
@@ -1,1436 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
- cm_service_result_sent = RES_NONE;
- auth_request_sent = false;
- auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b";
- ms_sends_msg("05247803305886089910070000006402");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and requests Ciphering");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("0554" "20bde240" /* 2nd vector's sres, s.a. */);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
-
- btw("needs ciph, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept");
- ms_sends_msg("0632");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 46071\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- OSMO_ASSERT(dtap_tx_confirmed);
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_imsi(imsi);
- paging_sent = false;
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response, and VLR sends Auth Request with third key");
- auth_request_sent = false;
- auth_request_expect_rand = "e7c03ba7cf0e2fde82b2dc4d63077d42";
- ms_sends_msg("06270703305882089910070000006402");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and requests Ciphering");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("0554" "a29514ae" /* 3rd vector's sres, s.a. */);
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
-
- btw("needs ciph, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05806470f1" /* originating address 46071 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("0632");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_ciph_tmsi()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- /* implicit: net->authentication_required = true; */
- net->a5_encryption = VLR_CIPH_A5_1;
- net->vlr->cfg.assign_tmsi = true;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b"
- "2104" "20bde240" "2208" "07fa7502e07e1c00"
- "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42"
- "2104" "a29514ae" "2208" "e2b234f807886400"
- "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
- "2104" "5afc8d72" "2208" "2392f14f709ae000"
- "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("05542d8b2c3e");
- OSMO_ASSERT(cipher_mode_cmd_sent);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs ciph, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("0632");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the new TMSI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x");
- vlr_subscr_put(vsub);
-
- BTW("after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector");
- cm_service_result_sent = RES_NONE;
- auth_request_sent = false;
- auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b";
- auth_request_expect_autn = NULL;
- ms_sends_msg("05247803305886" "05f4" "03020100");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and requests Ciphering");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("0554" "20bde240" /* 2nd vector's sres, s.a. */);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
-
- btw("needs ciph, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept");
- ms_sends_msg("0632");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 46071\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- OSMO_ASSERT(dtap_tx_confirmed);
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_tmsi(0x03020100);
- paging_sent = false;
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key");
- auth_request_sent = false;
- auth_request_expect_rand = "e7c03ba7cf0e2fde82b2dc4d63077d42";
- ms_sends_msg("06270703305882" "05f4" "03020100");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and requests Ciphering");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("0554" "a29514ae" /* 3rd vector's sres, s.a. */);
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
-
- btw("needs ciph, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05806470f1" /* originating address 46071 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("0632");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches, using TMSI");
- ms_sends_msg("050130" "05f4" "03020100");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_ciph_imei()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- /* implicit: net->authentication_required = true; */
- net->a5_encryption = VLR_CIPH_A5_1;
- net->vlr->cfg.check_imei_rqd = true;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b"
- "2104" "20bde240" "2208" "07fa7502e07e1c00"
- "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42"
- "2104" "a29514ae" "2208" "e2b234f807886400"
- "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
- "2104" "5afc8d72" "2208" "2392f14f709ae000"
- "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("05542d8b2c3e");
- OSMO_ASSERT(cipher_mode_cmd_sent);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("needs ciph, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("0632");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS");
- dtap_expect_tx("051802");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("We will only do business when the IMEI is known");
- EXPECT_CONN_COUNT(1);
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(vsub->imei[0], == 0, "%d");
- vlr_subscr_put(vsub);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS replies with an Identity Response");
- ms_sends_msg("0559084a32244332244332");
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the IMEI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d");
- vlr_subscr_put(vsub);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_ciph_imeisv()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- /* implicit: net->authentication_required = true; */
- net->a5_encryption = VLR_CIPH_A5_1;
- net->vlr->cfg.retrieve_imeisv = true;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b"
- "2104" "20bde240" "2208" "07fa7502e07e1c00"
- "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42"
- "2104" "a29514ae" "2208" "e2b234f807886400"
- "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
- "2104" "5afc8d72" "2208" "2392f14f709ae000"
- "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
- VERBOSE_ASSERT(cipher_mode_cmd_sent_with_imeisv, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("needs ciph, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(vsub->imeisv[0], == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS sends Ciphering Mode Complete with IMEISV, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("063217094b32244332244332f5");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("Subscriber has the IMEISV");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(strcmp(vsub->imeisv, "4234234234234235"), == 0, "%d");
- vlr_subscr_put(vsub);
-
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS replies with an Identity Response");
- ms_sends_msg("0559084a32244332244332");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_ciph_tmsi_imei()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- /* implicit: net->authentication_required = true; */
- net->a5_encryption = VLR_CIPH_A5_1;
- net->vlr->cfg.assign_tmsi = true;
- net->vlr->cfg.check_imei_rqd = true;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b"
- "2104" "20bde240" "2208" "07fa7502e07e1c00"
- "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42"
- "2104" "a29514ae" "2208" "e2b234f807886400"
- "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
- "2104" "5afc8d72" "2208" "2392f14f709ae000"
- "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("05542d8b2c3e");
- OSMO_ASSERT(cipher_mode_cmd_sent);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("needs ciph, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("0632");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS");
- dtap_expect_tx("051802");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("We will only do business when the IMEI is known");
- EXPECT_CONN_COUNT(1);
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(vsub->imei[0], == 0, "%d");
- vlr_subscr_put(vsub);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS replies with an Identity Response");
- ms_sends_msg("0559084a32244332244332");
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the IMEI and TMSI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x");
- vlr_subscr_put(vsub);
-
- BTW("subscriber detaches, using TMSI");
- ms_sends_msg("050130" "05f4" "03020100");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_lu_unknown_tmsi()
-{
- comment_start();
-
- btw("Location Update request with unknown TMSI sends ID Request for IMSI");
- lu_result_sent = RES_NONE;
- dtap_expect_tx("051801");
- ms_sends_msg("050802008168000130" "05f4" "23422342");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS tells us the IMSI, causes a GSUP LU request to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("0559089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("having received subscriber data does not mean acceptance");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void _test_umts_authen(enum ran_type via_ran)
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000010650";
-
- net->authentication_required = true;
- rx_from_ran = via_ran;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
- ms_sends_msg("0508" /* MM LU */
- "7" /* ciph key seq: no key available */
- "0" /* LU type: normal */
- "ffffff" "0000" /* LAI, LAC */
- "57" /* classmark 1: R99, early classmark, no power lvl */
- "089910070000106005" /* IMSI */
- "3303575886" /* classmark 2 */
- );
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* based on auc_3g:
- * K = 'EB215756028D60E3275E613320AEC880',
- * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308'
- * SQN = 0
- */
- auth_request_sent = false;
- auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d";
- auth_request_expect_autn = "8704f5ba55f30000d2ee44b22c8ea919";
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000000156f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d"
- /* TL sres TL kc */
- "2104" "9b36efdf" "2208" "059a4f668f6fbe39"
- /* TL 3G IK */
- "2310" "27497388b6cb044648f396aa155b95ef"
- /* TL 3G CK */
- "2410" "f64735036e5871319c679f4742a75ea1"
- /* TL AUTN */
- "2510" "8704f5ba55f30000d2ee44b22c8ea919"
- /* TL RES */
- "2708" "e229c19e791f2e41"
- /* TL TL rand */
- "0362" "2010" "c187a53a5e6b9d573cac7c74451fd46d"
- "2104" "85aa3130" "2208" "d3d50a000bf04f6e"
- "2310" "1159ec926a50e98c034a6b7d7c9f418d"
- "2410" "df3a03d9ca5335641efc8e36d76cd20b"
- "2510" "1843a645b98d00005b2d666af46c45d9"
- "2708" "7db47cf7f81e4dc7"
- "0362" "2010" "efa9c29a9742148d5c9070348716e1bb"
- "2104" "69d5f9fb" "2208" "3df176f0c29f1a3d"
- "2310" "eb50e770ddcc3060101d2f43b6c2b884"
- "2410" "76542abce5ff9345b0e8947f4c6e019c"
- "2510" "f9375e6d41e1000096e7fe4ff1c27e39"
- "2708" "706f996719ba609c"
- "0362" "2010" "f023d5a3b24726e0631b64b3840f8253"
- "2104" "d570c03f" "2208" "ec011be8919883d6"
- "2310" "c4e58af4ba43f3bcd904e16984f086d7"
- "2410" "0593f65e752e5cb7f473862bda05aa0a"
- "2510" "541ff1f077270000c5ea00d658bc7e9a"
- "2708" "3fd26072eaa2a04d"
- "0362" "2010" "2f8f90c780d6a9c0c53da7ac57b6707e"
- "2104" "b072446f220823f39f9f425ad6e6"
- "2310" "65af0527fda95b0dc5ae4aa515cdf32f"
- "2410" "537c3b35a3b13b08d08eeb28098f45cc"
- "2510" "4bf4e564f75300009bc796706bc65744"
- "2708" "0edb0eadbea94ac2",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0");
- ms_sends_msg("0554" "e229c19e" "2104" "791f2e41");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000000156f00804032443f2",
- "12010809710000000156f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
- auth_request_sent = false;
- auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
- auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9";
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
- "03575886" /* classmark 2 */
- "089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts with a CM Service Accept");
- gsup_expect_tx(NULL);
- ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 42342\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- OSMO_ASSERT(dtap_tx_confirmed);
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_imsi(imsi);
- paging_sent = false;
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response, and VLR sends Auth Request with third key");
- auth_request_sent = false;
- auth_request_expect_rand = "efa9c29a9742148d5c9070348716e1bb";
- auth_request_expect_autn = "f9375e6d41e1000096e7fe4ff1c27e39";
- ms_sends_msg("062707"
- "03575886" /* classmark 2 */
- "089910070000106005" /* IMSI */);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and sends pending SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05802443f2" /* originating address 42342 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130"
- "089910070000106005" /* IMSI */);
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
-}
-
-void test_umts_authen_geran()
-{
- comment_start();
- _test_umts_authen(RAN_GERAN_A);
- comment_end();
-}
-
-void test_umts_authen_utran()
-{
- comment_start();
- _test_umts_authen(RAN_UTRAN_IU);
- comment_end();
-}
-
-#define RECALC_AUTS 0
-
-#if RECALC_AUTS
-typedef uint8_t u8;
-extern int milenage_f2345(const u8 *opc, const u8 *k, const u8 *_rand,
- u8 *res, u8 *ck, u8 *ik, u8 *ak, u8 *akstar);
-extern int milenage_f1(const u8 *opc, const u8 *k, const u8 *_rand,
- const u8 *sqn, const u8 *amf, u8 *mac_a, u8 *mac_s);
-#endif
-
-void _test_umts_authen_resync(enum ran_type via_ran)
-{
- net->authentication_required = true;
- rx_from_ran = via_ran;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
- ms_sends_msg("0508" /* MM LU */
- "7" /* ciph key seq: no key available */
- "0" /* LU type: normal */
- "ffffff" "0000" /* LAI, LAC */
- "57" /* classmark 1: R99, early classmark, no power lvl */
- "089910070000106005" /* IMSI */
- "3303575886" /* classmark 2 */
- );
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* based on auc_3g:
- * K = 'EB215756028D60E3275E613320AEC880',
- * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308'
- * SQN = 0
- */
- auth_request_sent = false;
- auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d";
- auth_request_expect_autn = "8704f5ba55f30000d2ee44b22c8ea919";
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000000156f0"
- /* auth vectors... */
- /* TL TL rand */
- "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d"
- /* TL sres TL kc */
- "2104" "9b36efdf" "2208" "059a4f668f6fbe39"
- /* TL 3G IK */
- "2310" "27497388b6cb044648f396aa155b95ef"
- /* TL 3G CK */
- "2410" "f64735036e5871319c679f4742a75ea1"
- /* TL AUTN */
- "2510" "8704f5ba55f30000d2ee44b22c8ea919"
- /* TL RES */
- "2708" "e229c19e791f2e41"
- ,NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- /* The AUTN sent was 8704f5ba55f30000d2ee44b22c8ea919
- * (see expected error output)
- * with the first 6 bytes being SQN ^ AK.
- * K = EB215756028D60E3275E613320AEC880
- * OPC = FB2A3D1B360F599ABAB99DB8669F8308
- * RAND = 39fa2f4e3d523d8619a73b4f65c3e14d
- * --milenage-f5-->
- * AK = 8704f5ba55f3
- *
- * The first six bytes are 8704f5ba55f3,
- * and 8704f5ba55f3 ^ AK = 0.
- * --> SQN = 0.
- *
- * Say the USIM doesn't like that, let's say it is at SQN 23.
- * SQN_MS = 000000000017
- *
- * AUTS = Conc(SQN_MS) || MAC-S
- * Conc(SQN_MS) = SQN_MS ⊕ f5*[K](RAND)
- * MAC-S = f1*[K] (SQN MS || RAND || AMF)
- *
- * f5*--> Conc(SQN_MS) = 000000000017 ^ 979498b1f73a
- * = 979498b1f72d
- * AMF = 0000 (TS 33.102 v7.0.0, 6.3.3)
- *
- * MAC-S = f1*[K] (000000000017 || 39fa2f4e3d523d8619a73b4f65c3e14d || 0000)
- * = 3e28c59fa2e72f9c
- *
- * AUTS = 979498b1f72d || 3e28c59fa2e72f9c
- */
-#if RECALC_AUTS
- uint8_t ak[6];
- uint8_t akstar[6];
- uint8_t opc[16];
- uint8_t k[16];
- uint8_t rand[16];
- osmo_hexparse("EB215756028D60E3275E613320AEC880", k, sizeof(k));
- osmo_hexparse("FB2A3D1B360F599ABAB99DB8669F8308", opc, sizeof(opc));
- osmo_hexparse("39fa2f4e3d523d8619a73b4f65c3e14d", rand, sizeof(rand));
- milenage_f2345(opc, k, rand, NULL, NULL, NULL, ak, akstar);
- btw("ak = %s", osmo_hexdump_nospc(ak, sizeof(ak)));
- btw("akstar = %s", osmo_hexdump_nospc(akstar, sizeof(akstar)));
-
- uint8_t sqn_ms[6] = { 0, 0, 0, 0, 0, 23 };
- uint8_t amf[2] = { 0 };
- uint8_t mac_s[8];
- milenage_f1(opc, k, rand, sqn_ms, amf, NULL, mac_s);
- btw("mac_s = %s", osmo_hexdump_nospc(mac_s, sizeof(mac_s)));
- /* verify valid AUTS resulting in SQN 23 with:
- * osmo-auc-gen -3 -a milenage -k EB215756028D60E3275E613320AEC880 \
- * -o FB2A3D1B360F599ABAB99DB8669F8308 \
- * -r 39fa2f4e3d523d8619a73b4f65c3e14d \
- * -A 979498b1f72d3e28c59fa2e72f9c
- */
-#endif
-
- btw("MS sends Authen Failure with Resync cause, VLR sends GSUP to HLR to resync");
- auth_request_sent = false;
- gsup_expect_tx("08" /* OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST */
- "0108" "09710000000156f0" /* IMSI */
- "260e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */
- "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" /* RAND */);
- ms_sends_msg("051c" /* 05 = MM; 1c = Auth Failure */
- "15" /* cause = Synch Failure */
- "220e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */);
- VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(auth_request_sent, == false, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR replies with new tuples");
- auth_request_sent = false;
- auth_request_expect_rand = "0f1feb1623e1bf626334e37ec448ac18";
- auth_request_expect_autn = "02a83f62e9470000660d51afc75f169d";
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000000156f0"
- /* 1 auth vector */
- /* TL TL rand */
- "0362" "2010" "0f1feb1623e1bf626334e37ec448ac18"
- /* TL sres TL kc */
- "2104" "efde99da" "2208" "14778c855c523730"
- /* TL 3G IK */
- "2310" "8a90c769b7272f3bb7a1c1fbb1ea9349"
- /* TL 3G CK */
- "2410" "43ffc1cf8c89a7fd6ab94bd8d6162cbf"
- /* TL AUTN */
- "2510" "02a83f62e9470000660d51afc75f169d"
- /* TL RES */
- "2708" "1df5f0b4f22b696e"
- ,NULL);
-
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0");
- ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000000156f00804032443f2",
- "12010809710000000156f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
-}
-
-void test_umts_authen_resync_geran()
-{
- comment_start();
- _test_umts_authen_resync(RAN_GERAN_A);
- comment_end();
-}
-
-void test_umts_authen_resync_utran()
-{
- comment_start();
- _test_umts_authen_resync(RAN_UTRAN_IU);
- comment_end();
-}
-
-void test_gsm_milenage_authen()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000010650";
-
- comment_start();
-
- net->authentication_required = true;
- rx_from_ran = RAN_GERAN_A;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
- ms_sends_msg("0508" /* MM LU */
- "7" /* ciph key seq: no key available */
- "0" /* LU type: normal */
- "ffffff" "0000" /* LAI, LAC */
- "30" /* classmark 1: GSM phase 2 */
- "089910070000106005" /* IMSI */
- );
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* based on auc_3g:
- * K = 'EB215756028D60E3275E613320AEC880',
- * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308'
- * SQN = 0
- */
- auth_request_sent = false;
- auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d";
- auth_request_expect_autn = NULL;
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000000156f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d"
- /* TL sres TL kc */
- "2104" "9b36efdf" "2208" "059a4f668f6fbe39"
- /* TL 3G IK */
- "2310" "27497388b6cb044648f396aa155b95ef"
- /* TL 3G CK */
- "2410" "f64735036e5871319c679f4742a75ea1"
- /* TL AUTN */
- "2510" "8704f5ba55f30000d2ee44b22c8ea919"
- /* TL RES */
- "2708" "e229c19e791f2e41"
- "0362" "2010" "c187a53a5e6b9d573cac7c74451fd46d"
- "2104" "85aa3130" "2208" "d3d50a000bf04f6e"
- "2310" "1159ec926a50e98c034a6b7d7c9f418d"
- "2410" "df3a03d9ca5335641efc8e36d76cd20b"
- "2510" "1843a645b98d00005b2d666af46c45d9"
- "2708" "7db47cf7f81e4dc7"
- "0362" "2010" "efa9c29a9742148d5c9070348716e1bb"
- "2104" "69d5f9fb" "2208" "3df176f0c29f1a3d"
- "2310" "eb50e770ddcc3060101d2f43b6c2b884"
- "2410" "76542abce5ff9345b0e8947f4c6e019c"
- "2510" "f9375e6d41e1000096e7fe4ff1c27e39"
- "2708" "706f996719ba609c"
- ,NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0");
- ms_sends_msg("0554" "9b36efdf");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000000156f00804032443f2",
- "12010809710000000156f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
- auth_request_sent = false;
- auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
- auth_request_expect_autn = NULL;
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
- "03305886" /* classmark 2: GSM phase 2 */
- "089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts with a CM Service Accept");
- gsup_expect_tx(NULL);
- ms_sends_msg("0554" "85aa3130"); /* 2nd vector's sres, s.a. */
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 42342\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- OSMO_ASSERT(dtap_tx_confirmed);
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_imsi(imsi);
- paging_sent = false;
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response, and VLR sends Auth Request with third key");
- auth_request_sent = false;
- auth_request_expect_rand = "efa9c29a9742148d5c9070348716e1bb";
- auth_request_expect_autn = NULL;
- ms_sends_msg("062707"
- "03305886" /* classmark 2 */
- "089910070000106005" /* IMSI */);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends Authen Response, VLR accepts and sends pending SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05802443f2" /* originating address 42342 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("0554" "69d5f9fb"); /* 3nd vector's sres, s.a. */
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130"
- "089910070000106005" /* IMSI */);
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_ciph,
- test_ciph_tmsi,
- test_ciph_imei,
- test_ciph_imeisv,
- test_ciph_tmsi_imei,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err b/tests/msc_vlr/msc_vlr_test_gsm_ciph.err
deleted file mode 100644
index f48a9cdc7..000000000
--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.err
+++ /dev/null
@@ -1,1647 +0,0 @@
-===== test_ciph
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
- auth_request_sent == 1
-- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI:901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and...
-- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
-- ...expecting sres=20bde240
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- auth_request_sent == 1
- cm_service_result_sent == 0
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and requests Ciphering
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: 20 bd e2 40
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=07fa7502e07e1c00 retrieve_imeisv=0
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 0
- cipher_mode_cmd_sent == 1
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR MSISDN:46071: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
- cm_service_result_sent == 0
-- a USSD request is serviced
- expecting USSD:
- Your extension is 46071
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:46071: MSISDN = 46071
-DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-- DTAP matches expected message
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-- MS replies with Paging Response, and VLR sends Auth Request with third key
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...
-- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
-- ...expecting sres=a29514ae
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and requests Ciphering
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: a2 95 14 ae
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=e2b234f807886400 retrieve_imeisv=0
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cipher_mode_cmd_sent == 1
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR MSISDN:46071: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:46071 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_ciph: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_ciph_tmsi
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- auth_request_sent == 1
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI:901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the new TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0xffffffff
- vsub->tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- after a while, a new conn sends a CM Service Request using above TMSI. VLR responds with Auth Req, 2nd auth vector
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and...
-- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
-- ...expecting sres=20bde240
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- auth_request_sent == 1
- cm_service_result_sent == 0
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and requests Ciphering
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 20bde240)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: 20 bd e2 40
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=07fa7502e07e1c00 retrieve_imeisv=0
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 0
- cipher_mode_cmd_sent == 1
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Ciphering Mode Complete, VLR accepts; above Ciphering is an implicit CM Service Accept
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR MSISDN:46071: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
- cm_service_result_sent == 0
-- a USSD request is serviced
- expecting USSD:
- Your extension is 46071
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:46071: MSISDN = 46071
-DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-- DTAP matches expected message
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0
- paging_expecting_tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-- MS replies with Paging Response using TMSI, and VLR sends Auth Request with third key
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(TMSI)=50462976
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth+Ciph
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=2 auth_types=0x1 and...
-- ...rand=e7c03ba7cf0e2fde82b2dc4d63077d42
-- ...expecting sres=a29514ae
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and requests Ciphering
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = a29514ae)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: a2 95 14 ae
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(50462976)
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(50462976){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-- sending Ciphering Mode Command for MSISDN:46071: cipher=VLR_CIPH_A5_1 kc=e2b234f807886400 retrieve_imeisv=0
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cipher_mode_cmd_sent == 1
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Ciphering Mode Complete, VLR accepts and sends pending SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR MSISDN:46071: CIPHERING MODE COMPLETE
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:46071 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches, using TMSI
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(TMSI)=50462976
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_ciph_tmsi: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_ciph_imei
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI:901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- We will only do business when the IMEI is known
- llist_count(&net->subscr_conns) == 1
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->imei[0] == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS replies with an Identity Response
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
-DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423
-DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the IMEI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- strcmp(vsub->imei, "423423423423423") == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_ciph_imei: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_ciph_imeisv
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=1
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- cipher_mode_cmd_sent == 1
- cipher_mode_cmd_sent_with_imeisv == 1
- lu_result_sent == 0
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
- vsub->imeisv[0] == 0
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-- MS sends Ciphering Mode Complete with IMEISV, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI:901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: got IMEISV: 4234234234234235F
-DVLR set IMEISV on subscriber; IMSI=901700000004620 IMEISV=4234234234234235
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
- lu_result_sent == 0
-- Subscriber has the IMEISV
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
- strcmp(vsub->imeisv, "4234234234234235") == 0
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS replies with an Identity Response
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
-DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423
-DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_ID_IMEI
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Event VLR_ULA_E_ID_IMEI not permitted
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_ciph_imeisv: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_ciph_tmsi_imei
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth+Ciph
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends Ciphering Mode Command to MS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-- sending Ciphering Mode Command for IMSI:901700000004620: cipher=VLR_CIPH_A5_1 kc=61855fb81fc2a800 retrieve_imeisv=0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- needs ciph, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr IMSI:901700000004620: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- MS sends Ciphering Mode Complete, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_CIPH_M_COMPL
-DRR IMSI:901700000004620: CIPHERING MODE COMPLETE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
-DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- We will only do business when the IMEI is known
- llist_count(&net->subscr_conns) == 1
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->imei[0] == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS replies with an Identity Response
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
-DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423
-DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the IMEI and TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- strcmp(vsub->imei, "423423423423423") == 0
- vsub->tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- subscriber detaches, using TMSI
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(TMSI)=50462976
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_ciph_tmsi_imei: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_gsm_ciph.ok b/tests/msc_vlr/msc_vlr_test_gsm_ciph.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_gsm_ciph.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.c b/tests/msc_vlr/msc_vlr_test_hlr_reject.c
deleted file mode 100644
index c4cf3534a..000000000
--- a/tests/msc_vlr/msc_vlr_test_hlr_reject.c
+++ /dev/null
@@ -1,425 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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;
- gsup_rx("09" "010809710000004026f0" "020102", NULL);
- VERBOSE_ASSERT(auth_request_sent, == false, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_hlr_rej_auth_info_net_fail()
-{
- comment_start();
-
- net->authentication_required = true;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _SEND_AUTH_INFO_ERROR = net fail");
- auth_request_sent = false;
- gsup_rx("09" "010809710000004026f0" "020111", NULL);
- VERBOSE_ASSERT(auth_request_sent, == false, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_hlr_rej_auth_info_net_fail_no_reuse_tuples()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- net->authentication_required = true;
- net->vlr->cfg.auth_reuse_old_sets_on_error = false;
- net->vlr->cfg.auth_tuple_max_use_count = 0;
-
- BTW("Submit a used auth tuple in the VLR");
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- ,NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
-
- BTW("Now one auth tuple is available, but used.");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- OSMO_ASSERT(vsub->last_tuple);
- VERBOSE_ASSERT(vsub->last_tuple->use_count, == 1, "%d");
- /* no need to look at all auth tuples, the ongoing test would take an
- * unexpected course if there were more. */
- vlr_subscr_put(vsub);
-
- BTW("Another LU wants to get new tuples; HLR sends Network Failure, we reject.");
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _SEND_AUTH_INFO_ERROR = net fail");
- auth_request_sent = false;
- gsup_rx("09" "010809710000004026f0" "020111", NULL);
- VERBOSE_ASSERT(auth_request_sent, == false, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- net->authentication_required = true;
- net->vlr->cfg.auth_reuse_old_sets_on_error = true;
- net->vlr->cfg.auth_tuple_max_use_count = 0;
-
- BTW("Submit a used auth tuple in the VLR");
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- ,NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
-
- BTW("Now one auth tuple is available, but used.");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- OSMO_ASSERT(vsub->last_tuple);
- VERBOSE_ASSERT(vsub->last_tuple->use_count, == 1, "%d");
- /* no need to look at all auth tuples, the ongoing test would take an
- * unexpected course if there were more. */
- vlr_subscr_put(vsub);
-
- BTW("Another LU wants to get new tuples; HLR sends IMSI Unknown. Even though we would re-use an old tuple, reject the unknown IMSI.");
- VERBOSE_ASSERT(net->vlr->cfg.auth_reuse_old_sets_on_error, == true, "%d");
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI");
- auth_request_sent = false;
- gsup_rx("09" "010809710000004026f0" "020102", NULL);
- VERBOSE_ASSERT(auth_request_sent, == false, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_hlr_acc_but_no_auth_tuples()
-{
- comment_start();
-
- net->authentication_required = true;
- net->vlr->cfg.auth_reuse_old_sets_on_error = true;
- net->vlr->cfg.auth_tuple_max_use_count = 0;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT but it lacks auth tuples");
- auth_request_sent = false;
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* NO auth vectors */
- ,NULL);
- VERBOSE_ASSERT(auth_request_sent, == false, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_hlr_rej_auth_info_net_fail_reuse_tuples()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- comment_start();
-
- net->authentication_required = true;
- net->vlr->cfg.auth_reuse_old_sets_on_error = true;
- net->vlr->cfg.auth_tuple_max_use_count = 0;
-
- BTW("Submit a used auth tuple in the VLR");
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- ,NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
-
- BTW("Now one auth tuple is available, but used.");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- OSMO_ASSERT(vsub->last_tuple);
- VERBOSE_ASSERT(vsub->last_tuple->use_count, == 1, "%d");
- /* no need to look at all auth tuples, the ongoing test would take an
- * unexpected course if there were more. */
- vlr_subscr_put(vsub);
-
- BTW("Another LU wants to get new tuples; even though HLR sends Network Failure, we are reusing the old tuples.");
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _SEND_AUTH_INFO_ERROR = net fail");
- auth_request_sent = false;
- gsup_rx("09" "010809710000004026f0" "020111", NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_hlr_rej_lu()
-{
- comment_start();
-
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends UPDATE_LOCATION_ERROR");
- gsup_rx("05" "010809710000004026f0" "020102",
- NULL);
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_hlr_no_insert_data()
-{
- comment_start();
-
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends only _UPDATE_LOCATION_RESULT, no INSERT DATA");
- gsup_rx("06010809710000004026f0", NULL);
-
- /* TODO should we wait for OSMO_GSUP_MSGT_INSERT_DATA_REQUEST? */
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_hlr_rej_auth_info_unknown_imsi,
- test_hlr_rej_auth_info_net_fail,
- test_hlr_rej_auth_info_net_fail_reuse_tuples,
- test_hlr_rej_auth_info_net_fail_no_reuse_tuples,
- test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples,
- test_hlr_acc_but_no_auth_tuples,
- test_hlr_rej_lu,
- test_hlr_no_insert_data,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.err b/tests/msc_vlr/msc_vlr_test_hlr_reject.err
deleted file mode 100644
index e54824cf5..000000000
--- a/tests/msc_vlr/msc_vlr_test_hlr_reject.err
+++ /dev/null
@@ -1,1132 +0,0 @@
-===== test_hlr_rej_auth_info_unknown_imsi
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020102
-DVLR GSUP rx 14: 09010809710000004026f0020102
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_UNKNOWN_SUBSCR
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI:901700000004620, cause 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF IMSI:901700000004620: MSC conn use - 1 == 0
-DRLL subscr IMSI:901700000004620: Freeing subscriber connection
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
-DREF freeing VLR subscr IMSI:901700000004620
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 0
- lu_result_sent == 2
- llist_count(&net->subscr_conns) == 0
-===== test_hlr_rej_auth_info_unknown_imsi: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_hlr_rej_auth_info_net_fail
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _SEND_AUTH_INFO_ERROR = net fail
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111
-DVLR GSUP rx 14: 09010809710000004026f0020111
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI:901700000004620, cause 17
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF IMSI:901700000004620: MSC conn use - 1 == 0
-DRLL subscr IMSI:901700000004620: Freeing subscriber connection
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
-DREF freeing VLR subscr IMSI:901700000004620
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 0
- lu_result_sent == 2
- llist_count(&net->subscr_conns) == 0
-===== test_hlr_rej_auth_info_net_fail: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_hlr_rej_auth_info_net_fail_reuse_tuples
----
-- Submit a used auth tuple in the VLR
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
-DVLR GSUP rx 47: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 1 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- Now one auth tuple is available, but used.
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->last_tuple->use_count == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- Another LU wants to get new tuples; even though HLR sends Network Failure, we are reusing the old tuples.
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _SEND_AUTH_INFO_ERROR = net fail
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111
-DVLR GSUP rx 14: 09010809710000004026f0020111
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=2 key_seq=0
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=2 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:46071: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:46071) received res: 2d 8b 2c 3e
-DVLR SUBSCR(MSISDN:46071) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_hlr_rej_auth_info_net_fail_reuse_tuples: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples
----
-- Submit a used auth tuple in the VLR
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
-DVLR GSUP rx 47: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 1 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- Now one auth tuple is available, but used.
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->last_tuple->use_count == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- Another LU wants to get new tuples; HLR sends Network Failure, we reject.
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _SEND_AUTH_INFO_ERROR = net fail
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020111
-DVLR GSUP rx 14: 09010809710000004026f0020111
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 17: Network failure
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for MSISDN:46071, cause 17
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 0
- lu_result_sent == 2
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_hlr_rej_auth_info_net_fail_no_reuse_tuples: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples
----
-- Submit a used auth tuple in the VLR
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
-DVLR GSUP rx 47: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 1 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- Now one auth tuple is available, but used.
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->last_tuple->use_count == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- Another LU wants to get new tuples; HLR sends IMSI Unknown. Even though we would re-use an old tuple, reject the unknown IMSI.
- net->vlr->cfg.auth_reuse_old_sets_on_error == 1
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _SEND_AUTH_INFO_ERROR = unknown IMSI
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: 09010809710000004026f0020102
-DVLR GSUP rx 14: 09010809710000004026f0020102
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_NACK
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: GSUP: rx Auth Info Error cause: 2: IMSI unknown in HLR
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_UNKNOWN_SUBSCR
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for MSISDN:46071, cause 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 0
- lu_result_sent == 2
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_hlr_rej_auth_info_unkown_imsi_no_reuse_tuples: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_hlr_acc_but_no_auth_tuples
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT but it lacks auth tuples
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f0
-DVLR GSUP rx 11: 0a010809710000004026f0
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Authentication terminating with result VLR_AUTH_RES_PROC_ERR
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_AUTH_FAILED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTH_FAILED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-- sending LU Reject for IMSI:901700000004620, cause 17
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF IMSI:901700000004620: MSC conn use - 1 == 0
-DRLL subscr IMSI:901700000004620: Freeing subscriber connection
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
-DREF freeing VLR subscr IMSI:901700000004620
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 0
- lu_result_sent == 2
- llist_count(&net->subscr_conns) == 0
-===== test_hlr_acc_but_no_auth_tuples: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_hlr_rej_lu
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends UPDATE_LOCATION_ERROR
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: 05010809710000004026f0020102
-DVLR GSUP rx 14: 05010809710000004026f0020102
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR SUBSCR(IMSI:901700000004620) UpdateLocation failed; gmm_cause: IMSI unknown in HLR
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_NACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-- sending LU Reject for IMSI:901700000004620, cause 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF IMSI:901700000004620: MSC conn use - 1 == 0
-DRLL subscr IMSI:901700000004620: Freeing subscriber connection
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
-DREF freeing VLR subscr IMSI:901700000004620
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 2
- llist_count(&net->subscr_conns) == 0
-===== test_hlr_rej_lu: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_hlr_no_insert_data
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends only _UPDATE_LOCATION_RESULT, no INSERT DATA
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for IMSI:901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF IMSI:901700000004620: MSC conn use - 1 == 0
-DRLL subscr IMSI:901700000004620: Freeing subscriber connection
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr IMSI:901700000004620
-===== test_hlr_no_insert_data: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_reject.ok b/tests/msc_vlr/msc_vlr_test_hlr_reject.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_hlr_reject.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c b/tests/msc_vlr/msc_vlr_test_hlr_timeout.c
deleted file mode 100644
index 2872f0cf4..000000000
--- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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);
- fake_time_passes(1, 235);
- btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
- EXPECT_CONN_COUNT(0);
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
-
- clear_vlr();
- comment_end();
-}
-
-void test_hlr_timeout_lu_upd_loc_result()
-{
- comment_start();
-
- fake_time_start();
-
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- BTW("HLR never sends GSUP _UPDATE_LOCATION_RESULT");
-
- btw("At first, we're still waiting");
- fake_time_passes(0, 423);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
- EXPECT_CONN_COUNT(0);
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
-
- clear_vlr();
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_hlr_timeout_lu_auth_info,
- test_hlr_timeout_lu_upd_loc_result,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err b/tests/msc_vlr/msc_vlr_test_hlr_timeout.err
deleted file mode 100644
index dee4bfbbc..000000000
--- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.err
+++ /dev/null
@@ -1,183 +0,0 @@
-===== test_hlr_timeout_lu_auth_info
-- Total time passed: 0.000000 s
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
----
-- HLR never replies
-- At first, we're still waiting
-- Total time passed: 0.000423 s
- llist_count(&net->subscr_conns) == 1
-- Total time passed: 1.000658 s
- llist_count(&net->subscr_conns) == 1
-- Total time passed: 2.000893 s
- llist_count(&net->subscr_conns) == 1
-- Total time passed: 3.001128 s
- llist_count(&net->subscr_conns) == 1
-- Total time passed: 4.001363 s
- llist_count(&net->subscr_conns) == 1
-- Total time passed: 5.001598 s
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out
-- sending LU Reject for IMSI:901700000004620, cause 22
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF IMSI:901700000004620: MSC conn use - 1 == 0
-DRLL subscr IMSI:901700000004620: Freeing subscriber connection
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
-DREF freeing VLR subscr IMSI:901700000004620
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
-- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- llist_count(&net->subscr_conns) == 0
- lu_result_sent == 2
-===== test_hlr_timeout_lu_auth_info: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_hlr_timeout_lu_upd_loc_result
-- Total time passed: 0.000000 s
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
----
-- HLR never sends GSUP _UPDATE_LOCATION_RESULT
-- At first, we're still waiting
-- Total time passed: 0.000423 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 1.000658 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 2.000893 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 3.001128 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 4.001363 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 5.001598 s
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Connection timed out
-- sending LU Reject for MSISDN:46071, cause 22
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
-- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- llist_count(&net->subscr_conns) == 0
- lu_result_sent == 2
-===== test_hlr_timeout_lu_upd_loc_result: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_hlr_timeout.ok b/tests/msc_vlr/msc_vlr_test_hlr_timeout.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_hlr_timeout.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.c b/tests/msc_vlr/msc_vlr_test_ms_timeout.c
deleted file mode 100644
index 47ca9678f..000000000
--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.c
+++ /dev/null
@@ -1,183 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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");
- fake_time_passes(1, 235);
- btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
- EXPECT_CONN_COUNT(0);
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
-
- comment_end();
-}
-
-void test_ms_timeout_cm_auth_resp()
-{
- comment_start();
-
- net->authentication_required = true;
-
- fake_time_start();
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("08010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- auth_request_sent = false;
- auth_request_expect_rand = "585df1ae287f6e273dce07090d61320b";
- auth_request_expect_autn = NULL;
- /* Based on a Ki of 000102030405060708090a0b0c0d0e0f */
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000004026f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0322" "2010" "585df1ae287f6e273dce07090d61320b"
- /* TL sres TL kc */
- "2104" "2d8b2c3e" "2208" "61855fb81fc2a800"
- "0322" "2010" "12aca96fb4ffdea5c985cbafa9b6e18b"
- "2104" "20bde240" "2208" "07fa7502e07e1c00"
- "0322" "2010" "e7c03ba7cf0e2fde82b2dc4d63077d42"
- "2104" "a29514ae" "2208" "e2b234f807886400"
- "0322" "2010" "fa8f20b781b5881329d4fea26b1a3c51"
- "2104" "5afc8d72" "2208" "2392f14f709ae000"
- "0322" "2010" "0fd4cc8dbe8715d1f439e304edfd68dc"
- "2104" "bc8d1c5b" "2208" "da7cdd6bfe2d7000",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("05542d8b2c3e");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
- auth_request_sent = false;
- auth_request_expect_rand = "12aca96fb4ffdea5c985cbafa9b6e18b";
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886089910070000006402");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- BTW("MS fails to send an Authentication Response");
-
- btw("At first, we're still waiting");
- fake_time_passes(0, 423);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- fake_time_passes(1, 235);
- btw("SUBSCR_CONN_TIMEOUT has passed, conn is gone.");
- EXPECT_CONN_COUNT(0);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_REJECT, "%d");
-
- clear_vlr();
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_ms_timeout_lu_auth_resp,
- test_ms_timeout_cm_auth_resp,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.err b/tests/msc_vlr/msc_vlr_test_ms_timeout.err
deleted file mode 100644
index 8439def81..000000000
--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.err
+++ /dev/null
@@ -1,333 +0,0 @@
-===== test_ms_timeout_lu_auth_resp
-- Total time passed: 0.000000 s
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
-DVLR GSUP rx 47: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a800
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 1 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
----
-- MS fails to send an Authentication Response
-- At first, we're still waiting
-- Total time passed: 0.000423 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 1.000658 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 2.000893 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 3.001128 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 4.001363 s
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 0
-- Total time passed: 5.001598 s
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Connection timed out
-- sending LU Reject for IMSI:901700000004620, cause 22
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF IMSI:901700000004620: MSC conn use - 1 == 0
-DRLL subscr IMSI:901700000004620: Freeing subscriber connection
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 0
-DREF freeing VLR subscr IMSI:901700000004620
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
-- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- llist_count(&net->subscr_conns) == 0
- lu_result_sent == 2
-===== test_ms_timeout_lu_auth_resp: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_ms_timeout_cm_auth_resp
-- Total time passed: 0.000000 s
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000004026f0
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DVLR GSUP rx 191: 0a010809710000004026f003222010585df1ae287f6e273dce07090d61320b21042d8b2c3e220861855fb81fc2a8000322201012aca96fb4ffdea5c985cbafa9b6e18b210420bde240220807fa7502e07e1c0003222010e7c03ba7cf0e2fde82b2dc4d63077d422104a29514ae2208e2b234f80788640003222010fa8f20b781b5881329d4fea26b1a3c5121045afc8d7222082392f14f709ae000032220100fd4cc8dbe8715d1f439e304edfd68dc2104bc8d1c5b2208da7cdd6bfe2d7000
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000004620) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending GSM Auth Request for IMSI:901700000004620: tuple use_count=1 key_seq=0 auth_types=0x1 and...
-- ...rand=585df1ae287f6e273dce07090d61320b
-- ...expecting sres=2d8b2c3e
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000004620: MM GSM AUTHENTICATION RESPONSE (sres = 2d8b2c3e)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000004620) received res: 2d 8b 2c 3e
-DVLR SUBSCR(IMSI:901700000004620) AUTH established GSM security context
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1
-- sending GSM Auth Request for MSISDN:46071: tuple use_count=1 key_seq=1 auth_types=0x1 and...
-- ...rand=12aca96fb4ffdea5c985cbafa9b6e18b
-- ...expecting sres=20bde240
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 0
- auth_request_sent == 1
----
-- MS fails to send an Authentication Response
-- At first, we're still waiting
-- Total time passed: 0.000423 s
- llist_count(&net->subscr_conns) == 1
- cm_service_result_sent == 0
-- Total time passed: 1.000658 s
- llist_count(&net->subscr_conns) == 1
- cm_service_result_sent == 0
-- Total time passed: 2.000893 s
- llist_count(&net->subscr_conns) == 1
- cm_service_result_sent == 0
-- Total time passed: 3.001128 s
- llist_count(&net->subscr_conns) == 1
- cm_service_result_sent == 0
-- Total time passed: 4.001363 s
- llist_count(&net->subscr_conns) == 1
- cm_service_result_sent == 0
-- Total time passed: 5.001598 s
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Timeout of T0
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: Connection timed out
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_TIMEOUT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_TIMEOUT
-- sending CM Service Reject for MSISDN:46071, result VLR_PR_ARQ_RES_TIMEOUT
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Removing from parent Process_Access_Request_VLR(901700000004620)
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Freeing instance
-DVLR VLR_Authenticate(901700000004620){VLR_SUB_AS_WAIT_RESP}: Deallocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Event SUBSCR_CONN_E_CN_CLOSE not permitted
-- SUBSCR_CONN_TIMEOUT has passed, conn is gone.
- llist_count(&net->subscr_conns) == 0
- cm_service_result_sent == 2
-DREF freeing VLR subscr MSISDN:46071
-===== test_ms_timeout_cm_auth_resp: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_ms_timeout.ok b/tests/msc_vlr/msc_vlr_test_ms_timeout.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_ms_timeout.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.c b/tests/msc_vlr/msc_vlr_test_no_authen.c
deleted file mode 100644
index f5e2e2b62..000000000
--- a/tests/msc_vlr/msc_vlr_test_no_authen.c
+++ /dev/null
@@ -1,508 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("after a while, a new conn sends a CM Service Request");
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886089910070000006402");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(true);
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 46071\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_imsi(imsi);
- paging_sent = false;
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response, we deliver the SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05806470f1" /* originating address 46071 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("06270703305882089910070000006402");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_no_authen_tmsi()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- rx_from_ran = RAN_GERAN_A;
-
- comment_start();
-
- net->vlr->cfg.assign_tmsi = true;
-
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("having received subscriber data does not mean acceptance");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the new TMSI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x");
- vlr_subscr_put(vsub);
-
- BTW("after a while, a new conn sends a CM Service Request using above TMSI");
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886" "05f4" "03020100");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(true);
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 46071\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged using above TMSI");
- paging_expect_tmsi(0x03020100);
- paging_sent = false;
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response using TMSI, we deliver the SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05806470f1" /* originating address 46071 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("06270703305882" "05f4" "03020100");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- /* TODO: when the subscriber detaches, the vlr_subscr gets
- * deallocated and we no longer know the TMSI. This case is covered by
- * test_lu_unknown_tmsi(), so here I'd like to still have the TMSI.
- BTW("subscriber detaches, using TMSI");
- ms_sends_msg("050130" "05f4" "03020100");
- EXPECT_CONN_COUNT(0);
- */
-
- BTW("subscriber sends LU Request, this time with the TMSI");
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130" "05f4" "03020100");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("having received subscriber data does not mean acceptance");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x07060504);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x07060504, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- btw("subscriber has the new TMSI");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x07060504);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == GSM_RESERVED_TMSI, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == 0x07060504, "0x%08x");
- vlr_subscr_put(vsub);
-
- BTW("subscriber detaches, using new TMSI");
- ms_sends_msg("050130" "05f4" "07060504");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_no_authen_imei()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- rx_from_ran = RAN_GERAN_A;
-
- comment_start();
-
- net->vlr->cfg.check_imei_rqd = true;
-
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("having received subscriber data does not mean acceptance");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS");
- dtap_expect_tx("051802");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("We will only do business when the IMEI is known");
- EXPECT_CONN_COUNT(1);
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(vsub->imei[0], == 0, "%d");
- vlr_subscr_put(vsub);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS replies with an Identity Response");
- ms_sends_msg("0559084a32244332244332");
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the IMEI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d");
- vlr_subscr_put(vsub);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_no_authen_tmsi_imei()
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000004620";
-
- rx_from_ran = RAN_GERAN_A;
-
- comment_start();
-
- net->vlr->cfg.assign_tmsi = true;
- net->vlr->cfg.check_imei_rqd = true;
-
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("having received subscriber data does not mean acceptance");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS");
- dtap_expect_tx("051802");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("We will only do business when the IMEI is known");
- EXPECT_CONN_COUNT(1);
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(vsub->imei[0], == 0, "%d");
- vlr_subscr_put(vsub);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS replies with an Identity Response");
- ms_sends_msg("0559084a32244332244332");
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- btw("Subscriber has the IMEI and TMSI");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(strcmp(vsub->imei, "423423423423423"), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi, == 0x03020100, "0x%08x");
- vlr_subscr_put(vsub);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_no_authen,
- test_no_authen_tmsi,
- test_no_authen_imei,
- test_no_authen_tmsi_imei,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.err b/tests/msc_vlr/msc_vlr_test_no_authen.err
deleted file mode 100644
index 405cc1d7a..000000000
--- a/tests/msc_vlr/msc_vlr_test_no_authen.err
+++ /dev/null
@@ -1,1165 +0,0 @@
-===== test_no_authen
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- having received subscriber data does not mean acceptance
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- after a while, a new conn sends a CM Service Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-msc_subscr_conn_is_accepted() == true
-- a USSD request is serviced
- expecting USSD:
- Your extension is 46071
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:46071: MSISDN = 46071
-DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-- DTAP matches expected message
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-- MS replies with Paging Response, we deliver the SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 6
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 5
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:46071 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_no_authen: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_no_authen_tmsi
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- having received subscriber data does not mean acceptance
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the new TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0xffffffff
- vsub->tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- after a while, a new conn sends a CM Service Request using above TMSI
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(TMSI)=50462976
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-msc_subscr_conn_is_accepted() == true
-- a USSD request is serviced
- expecting USSD:
- Your extension is 46071
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:46071: MSISDN = 46071
-DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-- DTAP matches expected message
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged using above TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0x03020100, LAC 0
- paging_expecting_tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-- MS replies with Paging Response using TMSI, we deliver the SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(TMSI)=50462976
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: is child of Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 6
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 5
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:46071 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(50462976)
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(50462976){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber sends LU Request, this time with the TMSI
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(TMSI)=50462976 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: is child of Subscr_Conn(50462976)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(50462976)
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- having received subscriber data does not mean acceptance
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(50462976)
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(50462976){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(50462976)
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(50462976)
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(50462976)
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(50462976){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:46071, with TMSI 0x07060504
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:46071 usage increases to: 3
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x07060504
- vsub->tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(50462976)
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(50462976){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(50462976)
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(50462976){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(50462976){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-- subscriber has the new TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0xffffffff
- vsub->tmsi == 0x07060504
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- subscriber detaches, using new TMSI
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(TMSI)=117835012
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_no_authen_tmsi: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_no_authen_imei
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- having received subscriber data does not mean acceptance
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI
-DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- We will only do business when the IMEI is known
- llist_count(&net->subscr_conns) == 1
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->imei[0] == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS replies with an Identity Response
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
-DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423
-DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the IMEI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- strcmp(vsub->imei, "423423423423423") == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_no_authen_imei: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_no_authen_tmsi_imei
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- having received subscriber data does not mean acceptance
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT, and we send an ID Request for the IMEI to the MS
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_IMEI_TMSI
-DMSC msc_tx 3 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051802
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- We will only do business when the IMEI is known
- llist_count(&net->subscr_conns) == 1
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- vsub->imei[0] == 0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS replies with an Identity Response
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
-DMM IDENTITY RESPONSE: MI(IMEI)=423423423423423
-DVLR set IMEI on subscriber; IMSI=901700000004620 IMEI=423423423423423
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_ID_IMEI
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: Received Event LU_COMPL_VLR_E_IMEI_CHECK_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_IMEI_TMSI}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:46071, with TMSI 0x03020100
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
- lu_result_sent == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:46071
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-- Subscriber has the IMEI and TMSI
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- strcmp(vsub->imei, "423423423423423") == 0
- vsub->tmsi == 0x03020100
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_no_authen_tmsi_imei: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_no_authen.ok b/tests/msc_vlr/msc_vlr_test_no_authen.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_no_authen.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c b/tests/msc_vlr/msc_vlr_test_reject_concurrency.c
deleted file mode 100644
index 15988584a..000000000
--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.c
+++ /dev/null
@@ -1,379 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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_reject_2nd_conn()
-{
- struct gsm_subscriber_connection *conn1;
- comment_start();
-
- btw("Location Update Request on one connection");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- EXPECT_CONN_COUNT(1);
-
- btw("Another Location Update Request from the same subscriber on another connection is rejected");
- conn1 = g_conn;
- g_conn = NULL;
- ms_sends_msg("050802008168000130089910070000006402");
- VERBOSE_ASSERT(lu_result_sent, == RES_REJECT, "%d");
- EXPECT_CONN_COUNT(1);
-
-
- BTW("The first connection can still complete its LU");
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- g_conn = conn1;
- lu_result_sent = RES_NONE;
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-void _normal_lu_part1()
-{
- btw("Location Update Request");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- EXPECT_CONN_COUNT(1);
-}
-
-void _normal_lu_part2()
-{
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- lu_result_sent = RES_NONE;
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-}
-
-void _normal_lu()
-{
- BTW("Subscriber does a normal LU");
- _normal_lu_part1();
- _normal_lu_part2();
-}
-
-void _normal_cm_service_req()
-{
- BTW("Subscriber does a normal CM Service Request");
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886089910070000006402");
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
- EXPECT_ACCEPTED(true);
-}
-
-void _page()
-{
- const char *imsi = "901700000004620";
- struct vlr_subscr *vsub;
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_imsi(imsi);
- paging_sent = false;
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-}
-
-void _paging_resp_part1()
-{
- btw("MS replies with Paging Response, we deliver the SMS");
- dtap_expect_tx("09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05806470f1" /* originating address 46071 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05");
- ms_sends_msg("06270703305882089910070000006402");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-}
-
-void _paging_resp_part2(int expect_conn_count)
-{
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done");
- EXPECT_CONN_COUNT(expect_conn_count);
-}
-
-void test_reject_lu_during_lu()
-{
- comment_start();
-
- _normal_lu_part1();
-
- BTW("Another Location Update Request from the same subscriber on the same conn is dropped silently");
- ms_sends_msg("050802008168000130089910070000006402");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- EXPECT_CONN_COUNT(1);
-
- BTW("The first LU can still complete");
- _normal_lu_part2();
-
- clear_vlr();
- comment_end();
-}
-
-void test_reject_cm_during_lu()
-{
- comment_start();
-
- _normal_lu_part1();
-
- BTW("A CM Service Request in the middle of a LU is rejected");
- cm_service_result_sent = RES_NONE;
- dtap_expect_tx("052211");
- ms_sends_msg("05247803305886089910070000006402");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- EXPECT_CONN_COUNT(1);
-
- BTW("The first LU can still complete");
- _normal_lu_part2();
-
- clear_vlr();
- comment_end();
-}
-
-void test_reject_paging_resp_during_lu()
-{
- comment_start();
-
- _normal_lu_part1();
-
- BTW("An erratic Paging Response is dropped silently");
- ms_sends_msg("06270703305882089910070000006402");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- EXPECT_CONN_COUNT(1);
-
- BTW("The first LU can still complete");
- _normal_lu_part2();
-
- clear_vlr();
- comment_end();
-}
-
-void test_reject_lu_during_cm()
-{
- comment_start();
-
- _normal_lu();
- _normal_cm_service_req();
-
- btw("A LU request on an open conn is dropped silently");
- /* TODO: accept periodic LU on an already open conn? */
- lu_result_sent = RES_NONE;
- ms_sends_msg("050802008168000130089910070000006402");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- EXPECT_CONN_COUNT(1);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_reject_cm_during_cm()
-{
- comment_start();
-
- _normal_lu();
- _normal_cm_service_req();
-
- btw("A second CM Service Request on the same conn is accepted without another auth dance");
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886089910070000006402");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(1);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_reject_paging_resp_during_cm()
-{
- comment_start();
-
- _normal_lu();
- _normal_cm_service_req();
-
- BTW("An erratic Paging Response on the same conn is dropped silently");
- ms_sends_msg("06270703305882089910070000006402");
- EXPECT_CONN_COUNT(1);
-
- BTW("The original CM Service Request can conclude");
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 46071\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_reject_paging_resp_during_paging_resp()
-{
- comment_start();
-
- _normal_lu();
- _page();
- _paging_resp_part1();
-
- BTW("MS sends another erratic Paging Response which is dropped silently");
- ms_sends_msg("06270703305882089910070000006402");
-
- _paging_resp_part2(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_reject_lu_during_paging_resp()
-{
- comment_start();
-
- _normal_lu();
- _page();
- _paging_resp_part1();
-
- BTW("MS sends erratic LU Request, which is dropped silently");
- lu_result_sent = RES_NONE;
- ms_sends_msg("050802008168000130089910070000006402");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- EXPECT_CONN_COUNT(1);
-
- _paging_resp_part2(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_reject_cm_during_paging_resp()
-{
- comment_start();
-
- _normal_lu();
- _page();
- _paging_resp_part1();
-
- BTW("CM Service Request during open connection is accepted");
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("05247803305886089910070000006402");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(1);
- VERBOSE_ASSERT(g_conn->received_cm_service_request, == true, "%d");
-
- _paging_resp_part2(1);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_reject_2nd_conn,
- test_reject_lu_during_lu,
- test_reject_cm_during_lu,
- test_reject_paging_resp_during_lu,
- test_reject_lu_during_cm,
- test_reject_cm_during_cm,
- test_reject_paging_resp_during_cm,
- test_reject_lu_during_paging_resp,
- test_reject_cm_during_paging_resp,
- test_reject_paging_resp_during_paging_resp,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err b/tests/msc_vlr/msc_vlr_test_reject_concurrency.err
deleted file mode 100644
index 13d8a17c3..000000000
--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.err
+++ /dev/null
@@ -1,1763 +0,0 @@
-===== test_reject_2nd_conn
-- Location Update Request on one connection
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
-- Another Location Update Request from the same subscriber on another connection is rejected
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: A Location Updating process is already pending for this subscriber. Aborting.
-- sending LU Reject for unknown, cause 22
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF unknown: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DRR 901700000004620: internal error during Location Updating attempt
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- lu_result_sent == 2
- llist_count(&net->subscr_conns) == 1
----
-- The first connection can still complete its LU
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_reject_2nd_conn: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_lu_during_lu
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
----
-- Another Location Update Request from the same subscriber on the same conn is dropped silently
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM 901700000004620: Error: connection already in use
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
----
-- The first LU can still complete
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_reject_lu_during_lu: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_cm_during_lu
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
----
-- A CM Service Request in the middle of a LU is rejected
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DMM IMSI:901700000004620: connection already in use
-DMM -> CM SERVICE Reject cause: 17
-DMSC msc_tx 3 bytes to IMSI:901700000004620 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_CM_SERV_REJ: 052211
-- DTAP matches expected message
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- cm_service_result_sent == 0
- llist_count(&net->subscr_conns) == 1
----
-- The first LU can still complete
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_reject_cm_during_lu: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_paging_resp_during_lu
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
----
-- An erratic Paging Response is dropped silently
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
-DREF IMSI:901700000004620: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DMM 901700000004620: Error: connection already in use
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
----
-- The first LU can still complete
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_reject_paging_resp_during_lu: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_lu_during_cm
----
-- Subscriber does a normal LU
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- Subscriber does a normal CM Service Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-msc_subscr_conn_is_accepted() == true
-- A LU request on an open conn is dropped silently
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM 901700000004620: Error: connection already in use
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 DETACHED
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
- llist_count(&net->subscr_conns) == 0
-===== test_reject_lu_during_cm: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_cm_during_cm
----
-- Subscriber does a normal LU
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- Subscriber does a normal CM Service Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-msc_subscr_conn_is_accepted() == true
-- A second CM Service Request on the same conn is accepted without another auth dance
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DMM MSISDN:46071: re-using already accepted connection
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 1
- llist_count(&net->subscr_conns) == 1
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 DETACHED
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
- llist_count(&net->subscr_conns) == 0
-===== test_reject_cm_during_cm: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_paging_resp_during_cm
----
-- Subscriber does a normal LU
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- Subscriber does a normal CM Service Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-msc_subscr_conn_is_accepted() == true
----
-- An erratic Paging Response on the same conn is dropped silently
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DMM 901700000004620: Error: connection already in use
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- llist_count(&net->subscr_conns) == 1
----
-- The original CM Service Request can conclude
-- a USSD request is serviced
- expecting USSD:
- Your extension is 46071
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:46071: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:46071: MSISDN = 46071
-DMSC msc_tx 43 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d27310cd06bbc51a0d
-- DTAP matches expected message
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_reject_paging_resp_during_cm: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_lu_during_paging_resp
----
-- Subscriber does a normal LU
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- MS replies with Paging Response, we deliver the SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 6
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 5
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
----
-- MS sends erratic LU Request, which is dropped silently
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DMM 901700000004620: Error: connection already in use
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_reject_lu_during_paging_resp: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_cm_during_paging_resp
----
-- Subscriber does a normal LU
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- MS replies with Paging Response, we deliver the SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 6
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 5
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
----
-- CM Service Request during open connection is accepted
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DMM MSISDN:46071: re-using already accepted connection
-- sending CM Service Accept for MSISDN:46071
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 2
- cm_service_result_sent == 1
- llist_count(&net->subscr_conns) == 1
- g_conn->received_cm_service_request == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:46071: MSC conn use - 1 == 1
- dtap_tx_confirmed == 1
-- SMS is done
- llist_count(&net->subscr_conns) == 1
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
-DREF MSISDN:46071: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 DETACHED
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_ERROR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
- llist_count(&net->subscr_conns) == 0
-===== test_reject_cm_during_paging_resp: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_reject_paging_resp_during_paging_resp
----
-- Subscriber does a normal LU
-- Location Update Request
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
- llist_count(&net->subscr_conns) == 1
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:46071 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DMM Subscriber MSISDN:46071 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000004620, TMSI 0xffffffff, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:46071 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- MS replies with Paging Response, we deliver the SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:46071 usage increases to: 4
-DREF VLR subscr MSISDN:46071 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:46071 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:46071 usage increases to: 6
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005806470f1000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 5
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF VLR subscr MSISDN:46071 usage decreases to: 4
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
----
-- MS sends another erratic Paging Response which is dropped silently
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000004620
-DMM 901700000004620: Error: connection already in use
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:46071: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:46071: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:46071 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:46071 usage decreases to: 3
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DREF MSISDN:46071: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_reject_paging_resp_during_paging_resp: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_reject_concurrency.ok b/tests/msc_vlr/msc_vlr_test_reject_concurrency.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_reject_concurrency.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_test_rest.c b/tests/msc_vlr/msc_vlr_test_rest.c
deleted file mode 100644
index 5ccc951be..000000000
--- a/tests/msc_vlr/msc_vlr_test_rest.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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_early_stage()
-{
- comment_start();
-
- btw("NULL conn");
- EXPECT_ACCEPTED(false);
-
- btw("freshly allocated conn");
- g_conn = msc_subscr_con_allocate(net);
- g_conn->bts = the_bts;
- EXPECT_ACCEPTED(false);
-
- btw("conn_fsm present, in state NEW");
- OSMO_ASSERT(msc_create_conn_fsm(g_conn, "test") == 0);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->conn_fsm->state == SUBSCR_CONN_S_NEW);
- EXPECT_ACCEPTED(false);
-
- thwart_rx_non_initial_requests();
-
- btw("fake: acceptance");
- g_conn->vsub = vlr_subscr_alloc(net->vlr);
- OSMO_ASSERT(g_conn->vsub);
- /* mark as silent call so it sticks around */
- g_conn->silent_call = 1;
- osmo_fsm_inst_state_chg(g_conn->conn_fsm, SUBSCR_CONN_S_ACCEPTED, 0, 0);
- EXPECT_CONN_COUNT(1);
- EXPECT_ACCEPTED(true);
-
- btw("CLOSE event marks conn_fsm as released and frees the conn");
- osmo_fsm_inst_dispatch(g_conn->conn_fsm, SUBSCR_CONN_E_CN_CLOSE, NULL);
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_cm_service_without_lu()
-{
- comment_start();
-
- btw("CM Service Request without a prior Location Updating");
- ms_sends_msg("05247803305886089910070000006402");
-
- btw("conn was released");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
- comment_end();
-}
-
-void test_two_lu()
-{
- comment_start();
-
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("having received subscriber data does not mean acceptance");
- EXPECT_ACCEPTED(false);
-
- thwart_rx_non_initial_requests();
-
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
-
- BTW("verify that the MS can send another LU request");
- btw("Location Update request causes a GSUP LU request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("050802008168000130089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("having received subscriber data does not mean acceptance");
- EXPECT_ACCEPTED(false);
-
- thwart_rx_non_initial_requests();
-
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130089910070000006402");
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-void test_lu_unknown_tmsi()
-{
- comment_start();
-
- btw("Location Update request with unknown TMSI sends ID Request for IMSI");
- lu_result_sent = RES_NONE;
- dtap_expect_tx("051801");
- ms_sends_msg("050802008168000130" "05f4" "23422342");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("MS tells us the IMSI, causes a GSUP LU request to HLR");
- gsup_expect_tx("04010809710000004026f0");
- ms_sends_msg("0559089910070000006402");
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000004026f00804036470f1",
- "12010809710000004026f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("having received subscriber data does not mean acceptance");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000004026f0", NULL);
-
- btw("LU was successful, and the conn has already been closed");
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
- EXPECT_CONN_COUNT(0);
- clear_vlr();
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_early_stage,
- test_cm_service_without_lu,
- test_two_lu,
- test_lu_unknown_tmsi,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_rest.err b/tests/msc_vlr/msc_vlr_test_rest.err
deleted file mode 100644
index bef3ba68f..000000000
--- a/tests/msc_vlr/msc_vlr_test_rest.err
+++ /dev/null
@@ -1,475 +0,0 @@
-===== test_early_stage
-- NULL conn
-msc_subscr_conn_is_accepted() == false
-- freshly allocated conn
-msc_subscr_conn_is_accepted() == false
-- conn_fsm present, in state NEW
-DREF unknown: MSC conn use + 1 == 1
-DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(test){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr unknown: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr unknown: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr unknown: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr unknown: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- fake: acceptance
-DREF VLR subscr unknown usage increases to: 1
-DMM Subscr_Conn(test){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
- llist_count(&net->subscr_conns) == 1
-msc_subscr_conn_is_accepted() == true
-- CLOSE event marks conn_fsm as released and frees the conn
-DMM Subscr_Conn(test){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(test){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DREF unknown: MSC conn use - 1 == 0
-DRLL subscr unknown: Freeing subscriber connection
-DREF VLR subscr unknown usage decreases to: 0
-DREF freeing VLR subscr unknown
-DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(test){SUBSCR_CONN_S_RELEASED}: Deallocated
- llist_count(&net->subscr_conns) == 0
-===== test_early_stage: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_cm_service_without_lu
-- CM Service Request without a prior Location Updating
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000004620
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: rev=GSM net=GERAN (no Auth)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: proc_arq_fsm_done(VLR_PR_ARQ_RES_UNIDENT_SUBSCR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_UNIDENT_SUBSCR
-- sending CM Service Reject for unknown, result VLR_PR_ARQ_RES_UNIDENT_SUBSCR
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_CN_CLOSE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Close event, cause 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000004620){PR_ARQ_S_DONE}: Deallocated
-DREF unknown: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
-- conn was released
- llist_count(&net->subscr_conns) == 0
-===== test_cm_service_without_lu: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_two_lu
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR New subscr, IMSI: 901700000004620
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr IMSI:901700000004620 usage decreases to: 1
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- having received subscriber data does not mean acceptance
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- verify that the MS can send another LU request
-- Location Update request causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000004620 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM MSISDN:46071: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:46071: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- having received subscriber data does not mean acceptance
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000004620){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000004620)
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000004620){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000004620)
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000004620){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000004620)
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000004620){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000004620){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000004620
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DMM Subscriber MSISDN:46071 DETACHED
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-DREF VLR subscr MSISDN:46071 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:46071
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_two_lu: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_lu_unknown_tmsi
-- Location Update request with unknown TMSI sends ID Request for IMSI
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(TMSI)=591536962 type=IMSI ATTACH
-DMM LU/new-LAC: 1/0
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: is child of Subscr_Conn(591536962)
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: rev=GSM net=GERAN (no Auth)
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR New subscr, TMSI: 0x23422342
-DREF VLR subscr TMSI:0x23422342 usage increases to: 2
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: vlr_loc_upd_want_imsi()
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_IMSI
-DMSC msc_tx 3 bytes to TMSI:0x23422342 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_MT_MM_ID_REQ: 051801
-- DTAP matches expected message
-DREF VLR subscr TMSI:0x23422342 usage decreases to: 1
-DMM TMSI:0x23422342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF TMSI:0x23422342: MSC conn use - 1 == 1
- lu_result_sent == 0
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr TMSI:0x23422342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS tells us the IMSI, causes a GSUP LU request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_ID_RESP
-DREF TMSI:0x23422342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_ID_RESP (0x5:0x19)
-DMM IDENTITY RESPONSE: MI(IMSI)=901700000004620
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: Received Event VLR_ULA_E_ID_IMSI
-DVLR set IMSI on subscriber; IMSI=901700000004620 id=901700000004620
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_IMSI}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(591536962)
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000004026f0
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000004620: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000004620: MSC conn use - 1 == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000004026f00804036470f1
-DVLR GSUP rx 17: 10010809710000004026f00804036470f1
-DREF VLR subscr IMSI:901700000004620 usage increases to: 2
-DVLR IMSI:901700000004620 has MSISDN:46071
-DVLR GSUP tx: 12010809710000004026f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- having received subscriber data does not mean acceptance
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:46071: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000004026f0
-DVLR GSUP rx 11: 06010809710000004026f0
-DREF VLR subscr MSISDN:46071 usage increases to: 2
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(591536962)
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(591536962){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(591536962)
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(591536962)
-DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(591536962)
-DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(591536962){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-- sending LU Accept for MSISDN:46071
-DREF VLR subscr MSISDN:46071 usage increases to: 3
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(591536962)
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(591536962){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(591536962)
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(591536962){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:46071: MSC conn use - 1 == 0
-DRLL subscr MSISDN:46071: Freeing subscriber connection
-DREF VLR subscr MSISDN:46071 usage decreases to: 2
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(591536962){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF VLR subscr MSISDN:46071 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
-- LU was successful, and the conn has already been closed
- lu_result_sent == 1
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:46071
-===== test_lu_unknown_tmsi: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_rest.ok b/tests/msc_vlr/msc_vlr_test_rest.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_rest.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.c b/tests/msc_vlr/msc_vlr_test_umts_authen.c
deleted file mode 100644
index d026f0229..000000000
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.c
+++ /dev/null
@@ -1,558 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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_umts_authen(enum ran_type via_ran)
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000010650";
- const char *sms =
- "09" /* SMS messages */
- "01" /* CP-DATA */
- "58" /* length */
- "01" /* Network to MS */
- "00" /* reference */
- /* originator (gsm411_send_sms() hardcodes this weird nr) */
- "0791" "447758100650" /* 447785016005 */
- "00" /* dest */
- /* SMS TPDU */
- "4c" /* len */
- "00" /* SMS deliver */
- "05802443f2" /* originating address 42342 */
- "00" /* TP-PID */
- "00" /* GSM default alphabet */
- "071010" /* Y-M-D (from wrapped gsm340_gen_scts())*/
- "000000" /* H-M-S */
- "00" /* GMT+0 */
- "44" /* data length */
- "5079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0e"
- "d3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb"
- "0c7ac3e9e9b7db05";
-
- net->authentication_required = true;
- net->vlr->cfg.assign_tmsi = true;
- rx_from_ran = via_ran;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
- ms_sends_msg("0508" /* MM LU */
- "7" /* ciph key seq: no key available */
- "0" /* LU type: normal */
- "ffffff" "0000" /* LAI, LAC */
- "57" /* classmark 1: R99, early classmark, no power lvl */
- "089910070000106005" /* IMSI */
- "3303575886" /* classmark 2 */
- );
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* based on auc_3g:
- * K = 'EB215756028D60E3275E613320AEC880',
- * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308'
- * SQN = 0
- */
- auth_request_sent = false;
- auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d";
- auth_request_expect_autn = "8704f5ba55f30000d2ee44b22c8ea919";
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000000156f0"
- /* 5 auth vectors... */
- /* TL TL rand */
- "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d"
- /* TL sres TL kc */
- "2104" "9b36efdf" "2208" "059a4f668f6fbe39"
- /* TL 3G IK */
- "2310" "27497388b6cb044648f396aa155b95ef"
- /* TL 3G CK */
- "2410" "f64735036e5871319c679f4742a75ea1"
- /* TL AUTN */
- "2510" "8704f5ba55f30000d2ee44b22c8ea919"
- /* TL RES */
- "2708" "e229c19e791f2e41"
- /* TL TL rand */
- "0362" "2010" "c187a53a5e6b9d573cac7c74451fd46d"
- "2104" "85aa3130" "2208" "d3d50a000bf04f6e"
- "2310" "1159ec926a50e98c034a6b7d7c9f418d"
- "2410" "df3a03d9ca5335641efc8e36d76cd20b"
- "2510" "1843a645b98d00005b2d666af46c45d9"
- "2708" "7db47cf7f81e4dc7"
- "0362" "2010" "efa9c29a9742148d5c9070348716e1bb"
- "2104" "69d5f9fb" "2208" "3df176f0c29f1a3d"
- "2310" "eb50e770ddcc3060101d2f43b6c2b884"
- "2410" "76542abce5ff9345b0e8947f4c6e019c"
- "2510" "f9375e6d41e1000096e7fe4ff1c27e39"
- "2708" "706f996719ba609c"
- "0362" "2010" "f023d5a3b24726e0631b64b3840f8253"
- "2104" "d570c03f" "2208" "ec011be8919883d6"
- "2310" "c4e58af4ba43f3bcd904e16984f086d7"
- "2410" "0593f65e752e5cb7f473862bda05aa0a"
- "2510" "541ff1f077270000c5ea00d658bc7e9a"
- "2708" "3fd26072eaa2a04d"
- "0362" "2010" "2f8f90c780d6a9c0c53da7ac57b6707e"
- "2104" "b072446f220823f39f9f425ad6e6"
- "2310" "65af0527fda95b0dc5ae4aa515cdf32f"
- "2410" "537c3b35a3b13b08d08eeb28098f45cc"
- "2510" "4bf4e564f75300009bc796706bc65744"
- "2708" "0edb0eadbea94ac2",
- NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- if (via_ran == RAN_GERAN_A) {
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0");
- ms_sends_msg("0554" "e229c19e" "2104" "791f2e41");
- VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- } else {
- /* On UTRAN */
- btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("0554" "e229c19e" "2104" "791f2e41");
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0");
- ms_sends_security_mode_complete();
- VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- }
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000000156f00804032443f2",
- "12010809710000000156f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
-
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- BTW("after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector");
- auth_request_sent = false;
- auth_request_expect_rand = "c187a53a5e6b9d573cac7c74451fd46d";
- auth_request_expect_autn = "1843a645b98d00005b2d666af46c45d9";
- cm_service_result_sent = RES_NONE;
- ms_sends_msg("052478"
- "03575886" /* classmark 2 */
- "089910070000106005" /* IMSI */);
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->conn_fsm);
- OSMO_ASSERT(g_conn->vsub);
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- if (via_ran == RAN_GERAN_A) {
- btw("MS sends Authen Response, VLR accepts with a CM Service Accept");
- gsup_expect_tx(NULL);
- ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */
- VERBOSE_ASSERT(cm_service_result_sent, == RES_ACCEPT, "%d");
- } else {
- /* On UTRAN */
- btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("0554" "7db47cf7" "2104" "f81e4dc7"); /* 2nd vector's res, s.a. */
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
-
- btw("MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept");
- ms_sends_security_mode_complete();
- VERBOSE_ASSERT(cm_service_result_sent, == RES_NONE, "%d");
- }
-
- btw("a USSD request is serviced");
- dtap_expect_tx_ussd("Your extension is 42342\r");
- ms_sends_msg("0b3b1c15a11302010002013b300b04010f0406aa510c061b017f0100");
- OSMO_ASSERT(dtap_tx_confirmed);
-
- btw("all requests serviced, conn has been released");
- EXPECT_CONN_COUNT(0);
-
- BTW("an SMS is sent, MS is paged");
- paging_expect_imsi(imsi);
- paging_sent = false;
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
-
- send_sms(vsub, vsub,
- "Privacy in residential applications is a desirable"
- " marketing option.");
-
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
- vsub = NULL;
- VERBOSE_ASSERT(paging_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("the subscriber and its pending request should remain");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 1, "%d");
- vlr_subscr_put(vsub);
-
- btw("MS replies with Paging Response, and VLR sends Auth Request with third key");
- auth_request_sent = false;
- auth_request_expect_rand = "efa9c29a9742148d5c9070348716e1bb";
- auth_request_expect_autn = "f9375e6d41e1000096e7fe4ff1c27e39";
- ms_sends_msg("062707"
- "03575886" /* classmark 2 */
- "089910070000106005" /* IMSI */);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
-
- btw("needs auth, not yet accepted");
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- if (via_ran == RAN_GERAN_A) {
- btw("MS sends Authen Response, VLR accepts and sends pending SMS");
- dtap_expect_tx(sms);
- ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
- } else {
- /* On UTRAN */
- btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("0554" "706f9967" "2104" "19ba609c"); /* 3nd vector's res, s.a. */
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
- VERBOSE_ASSERT(paging_stopped, == false, "%d");
-
- btw("MS sends SecurityModeControl acceptance, VLR accepts and sends SMS");
- dtap_expect_tx(sms);
- ms_sends_security_mode_complete();
- VERBOSE_ASSERT(paging_stopped, == true, "%d");
- }
-
- btw("SMS was delivered, no requests pending for subscr");
- vsub = vlr_subscr_find_by_imsi(net->vlr, imsi);
- OSMO_ASSERT(vsub);
- VERBOSE_ASSERT(llist_count(&vsub->cs.requests), == 0, "%d");
- vlr_subscr_put(vsub);
-
- btw("conn is still open to wait for SMS ack dance");
- EXPECT_CONN_COUNT(1);
-
- btw("MS replies with CP-ACK for received SMS");
- ms_sends_msg("8904");
- EXPECT_CONN_COUNT(1);
-
- btw("MS also sends RP-ACK, MSC in turn sends CP-ACK for that");
- dtap_expect_tx("0904");
- ms_sends_msg("890106020041020000");
- VERBOSE_ASSERT(dtap_tx_confirmed, == true, "%d");
-
- btw("SMS is done, conn is gone");
- EXPECT_CONN_COUNT(0);
-
- BTW("subscriber detaches");
- ms_sends_msg("050130"
- "089910070000106005" /* IMSI */);
-
- EXPECT_CONN_COUNT(0);
- clear_vlr();
-}
-
-void test_umts_authen_geran()
-{
- comment_start();
- _test_umts_authen(RAN_GERAN_A);
- comment_end();
-}
-
-void test_umts_authen_utran()
-{
- comment_start();
- _test_umts_authen(RAN_UTRAN_IU);
- comment_end();
-}
-
-#define RECALC_AUTS 0
-
-#if RECALC_AUTS
-typedef uint8_t u8;
-extern int milenage_f2345(const u8 *opc, const u8 *k, const u8 *_rand,
- u8 *res, u8 *ck, u8 *ik, u8 *ak, u8 *akstar);
-extern int milenage_f1(const u8 *opc, const u8 *k, const u8 *_rand,
- const u8 *sqn, const u8 *amf, u8 *mac_a, u8 *mac_s);
-#endif
-
-void _test_umts_authen_resync(enum ran_type via_ran)
-{
- struct vlr_subscr *vsub;
- const char *imsi = "901700000010650";
-
- net->authentication_required = true;
- net->vlr->cfg.assign_tmsi = true;
- rx_from_ran = via_ran;
-
- btw("Location Update request causes a GSUP Send Auth Info request to HLR");
- lu_result_sent = RES_NONE;
- gsup_expect_tx("080108" "09710000000156f0");
- ms_sends_msg("0508" /* MM LU */
- "7" /* ciph key seq: no key available */
- "0" /* LU type: normal */
- "ffffff" "0000" /* LAI, LAC */
- "57" /* classmark 1: R99, early classmark, no power lvl */
- "089910070000106005" /* IMSI */
- "3303575886" /* classmark 2 */
- );
- OSMO_ASSERT(gsup_tx_confirmed);
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS");
- /* based on auc_3g:
- * K = 'EB215756028D60E3275E613320AEC880',
- * OPC = 'FB2A3D1B360F599ABAB99DB8669F8308'
- * SQN = 0
- */
- auth_request_sent = false;
- auth_request_expect_rand = "39fa2f4e3d523d8619a73b4f65c3e14d";
- auth_request_expect_autn = "8704f5ba55f30000d2ee44b22c8ea919";
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000000156f0"
- /* auth vectors... */
- /* TL TL rand */
- "0362" "2010" "39fa2f4e3d523d8619a73b4f65c3e14d"
- /* TL sres TL kc */
- "2104" "9b36efdf" "2208" "059a4f668f6fbe39"
- /* TL 3G IK */
- "2310" "27497388b6cb044648f396aa155b95ef"
- /* TL 3G CK */
- "2410" "f64735036e5871319c679f4742a75ea1"
- /* TL AUTN */
- "2510" "8704f5ba55f30000d2ee44b22c8ea919"
- /* TL RES */
- "2708" "e229c19e791f2e41"
- ,NULL);
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- /* The AUTN sent was 8704f5ba55f30000d2ee44b22c8ea919
- * (see expected error output)
- * with the first 6 bytes being SQN ^ AK.
- * K = EB215756028D60E3275E613320AEC880
- * OPC = FB2A3D1B360F599ABAB99DB8669F8308
- * RAND = 39fa2f4e3d523d8619a73b4f65c3e14d
- * --milenage-f5-->
- * AK = 8704f5ba55f3
- *
- * The first six bytes are 8704f5ba55f3,
- * and 8704f5ba55f3 ^ AK = 0.
- * --> SQN = 0.
- *
- * Say the USIM doesn't like that, let's say it is at SQN 23.
- * SQN_MS = 000000000017
- *
- * AUTS = Conc(SQN_MS) || MAC-S
- * Conc(SQN_MS) = SQN_MS ⊕ f5*[K](RAND)
- * MAC-S = f1*[K] (SQN MS || RAND || AMF)
- *
- * f5*--> Conc(SQN_MS) = 000000000017 ^ 979498b1f73a
- * = 979498b1f72d
- * AMF = 0000 (TS 33.102 v7.0.0, 6.3.3)
- *
- * MAC-S = f1*[K] (000000000017 || 39fa2f4e3d523d8619a73b4f65c3e14d || 0000)
- * = 3e28c59fa2e72f9c
- *
- * AUTS = 979498b1f72d || 3e28c59fa2e72f9c
- */
-#if RECALC_AUTS
- uint8_t ak[6];
- uint8_t akstar[6];
- uint8_t opc[16];
- uint8_t k[16];
- uint8_t rand[16];
- osmo_hexparse("EB215756028D60E3275E613320AEC880", k, sizeof(k));
- osmo_hexparse("FB2A3D1B360F599ABAB99DB8669F8308", opc, sizeof(opc));
- osmo_hexparse("39fa2f4e3d523d8619a73b4f65c3e14d", rand, sizeof(rand));
- milenage_f2345(opc, k, rand, NULL, NULL, NULL, ak, akstar);
- btw("ak = %s", osmo_hexdump_nospc(ak, sizeof(ak)));
- btw("akstar = %s", osmo_hexdump_nospc(akstar, sizeof(akstar)));
-
- uint8_t sqn_ms[6] = { 0, 0, 0, 0, 0, 23 };
- uint8_t amf[2] = { 0 };
- uint8_t mac_s[8];
- milenage_f1(opc, k, rand, sqn_ms, amf, NULL, mac_s);
- btw("mac_s = %s", osmo_hexdump_nospc(mac_s, sizeof(mac_s)));
- /* verify valid AUTS resulting in SQN 23 with:
- osmo-auc-gen -3 -a milenage -k EB215756028D60E3275E613320AEC880 \
- -o FB2A3D1B360F599ABAB99DB8669F8308 \
- -r 39fa2f4e3d523d8619a73b4f65c3e14d \
- -A 979498b1f72d3e28c59fa2e72f9c
- */
-#endif
-
- btw("MS sends Authen Failure with Resync cause, VLR sends GSUP to HLR to resync");
- auth_request_sent = false;
- gsup_expect_tx("08" /* OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST */
- "0108" "09710000000156f0" /* IMSI */
- "260e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */
- "2010" "39fa2f4e3d523d8619a73b4f65c3e14d" /* RAND */);
- ms_sends_msg("051c" /* 05 = MM; 1c = Auth Failure */
- "15" /* cause = Synch Failure */
- "220e" "979498b1f72d3e28c59fa2e72f9c" /* AUTS */);
- VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(auth_request_sent, == false, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR replies with new tuples");
- auth_request_sent = false;
- auth_request_expect_rand = "0f1feb1623e1bf626334e37ec448ac18";
- auth_request_expect_autn = "02a83f62e9470000660d51afc75f169d";
- gsup_rx("0a"
- /* imsi */
- "0108" "09710000000156f0"
- /* 1 auth vector */
- /* TL TL rand */
- "0362" "2010" "0f1feb1623e1bf626334e37ec448ac18"
- /* TL sres TL kc */
- "2104" "efde99da" "2208" "14778c855c523730"
- /* TL 3G IK */
- "2310" "8a90c769b7272f3bb7a1c1fbb1ea9349"
- /* TL 3G CK */
- "2410" "43ffc1cf8c89a7fd6ab94bd8d6162cbf"
- /* TL AUTN */
- "2510" "02a83f62e9470000660d51afc75f169d"
- /* TL RES */
- "2708" "1df5f0b4f22b696e"
- /* TL TL rand */
- "0362" "2010" "ac21d34937b4e1142a2c757af2949319"
- /* TL sres TL kc */
- "2104" "7818bfdc" "2208" "d175571f41f314a4"
- /* TL 3G IK */
- "2310" "ff8edbceb6dd24799c77c3b9a6790c10"
- /* TL 3G CK */
- "2410" "157c39022ca9d885a7f0766a7dfee448"
- /* TL AUTN */
- "2510" "8a43b91898e500002cf354c6f5d1f8c3"
- /* TL RES */
- "2708" "f748a7078f5018db"
- ,NULL);
-
- VERBOSE_ASSERT(auth_request_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- if (via_ran == RAN_GERAN_A) {
- btw("MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0");
- ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e");
- VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- } else {
- /* On UTRAN */
- btw("MS sends Authen Response, VLR accepts and sends SecurityModeControl");
- cipher_mode_cmd_sent = false;
- ms_sends_msg("0554" "1df5f0b4" "2104" "f22b696e");
- VERBOSE_ASSERT(cipher_mode_cmd_sent, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR");
- gsup_expect_tx("04010809710000000156f0");
- ms_sends_security_mode_complete();
- VERBOSE_ASSERT(gsup_tx_confirmed, == true, "%d");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
- }
-
- btw("HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT");
- gsup_rx("10010809710000000156f00804032443f2",
- "12010809710000000156f0");
- VERBOSE_ASSERT(lu_result_sent, == RES_NONE, "%d");
-
- btw("HLR also sends GSUP _UPDATE_LOCATION_RESULT");
- gsup_rx("06010809710000000156f0", NULL);
-
- VERBOSE_ASSERT(lu_result_sent, == RES_ACCEPT, "%d");
-
- btw("a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl");
- EXPECT_CONN_COUNT(1);
- EXPECT_ACCEPTED(false);
- thwart_rx_non_initial_requests();
-
- btw("even though the TMSI is not acked, we can already find the subscr with it");
- vsub = vlr_subscr_find_by_tmsi(net->vlr, 0x03020100);
- VERBOSE_ASSERT(vsub != NULL, == true, "%d");
- VERBOSE_ASSERT(strcmp(vsub->imsi, imsi), == 0, "%d");
- VERBOSE_ASSERT(vsub->tmsi_new, == 0x03020100, "0x%08x");
- VERBOSE_ASSERT(vsub->tmsi, == GSM_RESERVED_TMSI, "0x%08x");
- vlr_subscr_put(vsub);
-
- btw("MS sends TMSI Realloc Complete");
- ms_sends_msg("055b");
-
- btw("LU was successful, and the conn has already been closed");
- EXPECT_CONN_COUNT(0);
-
- clear_vlr();
-}
-
-void test_umts_authen_resync_geran()
-{
- comment_start();
- _test_umts_authen_resync(RAN_GERAN_A);
- comment_end();
-}
-
-void test_umts_authen_resync_utran()
-{
- comment_start();
- _test_umts_authen_resync(RAN_UTRAN_IU);
- comment_end();
-}
-
-msc_vlr_test_func_t msc_vlr_tests[] = {
- test_umts_authen_geran,
- test_umts_authen_utran,
- test_umts_authen_resync_geran,
- test_umts_authen_resync_utran,
- NULL
-};
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.err b/tests/msc_vlr/msc_vlr_test_umts_authen.err
deleted file mode 100644
index dcacbf9e3..000000000
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.err
+++ /dev/null
@@ -1,1367 +0,0 @@
-===== test_umts_authen_geran
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL
-DMM LU/new-LAC: 0/0
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
-DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2
-DVLR GSUP rx 511: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000010650) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
-- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
-- ...autn=8704f5ba55f30000d2ee44b22c8ea919
-- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000010650: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000010650: MM R99 AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000010650) received res: e2 29 c1 9e 79 1f 2e 41
-DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- gsup_tx_confirmed == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2
-DVLR GSUP rx 17: 10010809710000000156f00804032443f2
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR IMSI:901700000010650 has MSISDN:42342
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0
-DVLR GSUP rx 11: 06010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:42342, with TMSI 0x03020100
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 1
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:42342 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
----
-- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000010650
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DREF VLR subscr MSISDN:42342 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1
-- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and...
-- ...rand=c187a53a5e6b9d573cac7c74451fd46d
-- ...autn=1843a645b98d00005b2d666af46c45d9
-- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr MSISDN:42342 usage decreases to: 2
-DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:42342: MSC conn use - 1 == 1
- cm_service_result_sent == 0
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts with a CM Service Accept
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:42342: MM R99 AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:42342) received res: 7d b4 7c f7 f8 1e 4d c7
-DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-- sending CM Service Accept for MSISDN:42342
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
-DREF MSISDN:42342: MSC conn use - 1 == 1
- cm_service_result_sent == 1
-- a USSD request is serviced
- expecting USSD:
- Your extension is 42342
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:42342: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:42342: MSISDN = 42342
-DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d
-- DTAP matches expected message
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:42342 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:42342 usage increases to: 3
-DMM Subscriber MSISDN:42342 not paged yet, start paging.
- RAN_GERAN_A sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:42342 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:42342 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
-- MS replies with Paging Response, and VLR sends Auth Request with third key
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000010650
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:42342 usage increases to: 4
-DREF VLR subscr MSISDN:42342 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2
-- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x3 and...
-- ...rand=efa9c29a9742148d5c9070348716e1bb
-- ...autn=f9375e6d41e1000096e7fe4ff1c27e39
-- ...expecting res=706f996719ba609c
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:42342: MSC conn use - 1 == 1
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and sends pending SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:42342: MM R99 AUTHENTICATION RESPONSE (res = 706f996719ba609c)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:42342) received res: 70 6f 99 67 19 ba 60 9c
-DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_ciph()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:42342 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:42342 usage increases to: 5
-DREF MSISDN:42342: MSC conn use + 1 == 3
-DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:42342: MSC conn use - 1 == 2
- dtap_tx_confirmed == 1
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:42342 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:42342: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:42342: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_GERAN_A-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:42342: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_GERAN_A
-- DTAP --RAN_GERAN_A--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
-DREF VLR subscr MSISDN:42342 usage decreases to: 2
-DREF MSISDN:42342: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DMM Subscriber MSISDN:42342 DETACHED
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:42342
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_umts_authen_geran: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_umts_authen_utran
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL
-DMM LU/new-LAC: 0/0
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
-DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2
-DVLR GSUP rx 511: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e4103622010c187a53a5e6b9d573cac7c74451fd46d210485aa31302208d3d50a000bf04f6e23101159ec926a50e98c034a6b7d7c9f418d2410df3a03d9ca5335641efc8e36d76cd20b25101843a645b98d00005b2d666af46c45d927087db47cf7f81e4dc703622010efa9c29a9742148d5c9070348716e1bb210469d5f9fb22083df176f0c29f1a3d2310eb50e770ddcc3060101d2f43b6c2b884241076542abce5ff9345b0e8947f4c6e019c2510f9375e6d41e1000096e7fe4ff1c27e392708706f996719ba609c03622010f023d5a3b24726e0631b64b3840f82532104d570c03f2208ec011be8919883d62310c4e58af4ba43f3bcd904e16984f086d724100593f65e752e5cb7f473862bda05aa0a2510541ff1f077270000c5ea00d658bc7e9a27083fd26072eaa2a04d036220102f8f90c780d6a9c0c53da7ac57b6707e2104b072446f220823f39f9f425ad6e6231065af0527fda95b0dc5ae4aa515cdf32f2410537c3b35a3b13b08d08eeb28098f45cc25104bf4e564f75300009bc796706bc6574427080edb0eadbea94ac2
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000010650) Received 5 auth tuples
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
-- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
-- ...autn=8704f5ba55f30000d2ee44b22c8ea919
-- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends SecurityModeControl
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000010650: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000010650: MM R99 AUTHENTICATION RESPONSE (res = e229c19e791f2e41)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000010650) received res: e2 29 c1 9e 79 1f 2e 41
-DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-- sending SecurityModeControl for IMSI:901700000010650
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- cipher_mode_cmd_sent == 1
- lu_result_sent == 0
-- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DIUCS Looking for IuCS subscriber: conn_id 2a
-DIUCS 0: IMSI:901700000010650 Iu conn_id 42
-DIUCS subscribers registered: 1
-DIUCS Found IuCS subscriber for conn_id 2a
-DIUCS IuCS security mode complete for IMSI:901700000010650
-DMM <- SECURITY MODE COMPLETE IMSI:901700000010650
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI:901700000010650: tx CommonID 901700000010650
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
- gsup_tx_confirmed == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2
-DVLR GSUP rx 17: 10010809710000000156f00804032443f2
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR IMSI:901700000010650 has MSISDN:42342
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0
-DVLR GSUP rx 11: 06010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:42342, with TMSI 0x03020100
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 1
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:42342 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
----
-- after a while, a new conn sends a CM Service Request. VLR responds with Auth Req, 2nd auth vector
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_CM_SERV_REQ
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_CM_SERV_REQ (0x5:0x24)
-DMM <- CM SERVICE REQUEST serv_type=0x08 MI(IMSI)=901700000010650
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DREF VLR subscr MSISDN:42342 usage increases to: 3
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=1
-- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=1 auth_types=0x3 and...
-- ...rand=c187a53a5e6b9d573cac7c74451fd46d
-- ...autn=1843a645b98d00005b2d666af46c45d9
-- ...expecting res=7db47cf7f81e4dc7
-DREF VLR subscr MSISDN:42342 usage decreases to: 2
-DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:42342: MSC conn use - 1 == 1
- cm_service_result_sent == 0
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and sends SecurityModeControl
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:42342: MM R99 AUTHENTICATION RESPONSE (res = 7db47cf7f81e4dc7)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:42342) received res: 7d b4 7c f7 f8 1e 4d c7
-DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-- sending SecurityModeControl for MSISDN:42342
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:42342: MSC conn use - 1 == 1
- cipher_mode_cmd_sent == 1
- cm_service_result_sent == 0
-- MS sends SecurityModeControl acceptance, VLR accepts; above Ciphering is an implicit CM Service Accept
-DIUCS Looking for IuCS subscriber: conn_id 2a
-DIUCS 0: MSISDN:42342 Iu conn_id 42
-DIUCS subscribers registered: 1
-DIUCS Found IuCS subscriber for conn_id 2a
-DIUCS IuCS security mode complete for MSISDN:42342
-DMM <- SECURITY MODE COMPLETE MSISDN:42342
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS MSISDN:42342: tx CommonID 901700000010650
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_CM_SERVICE_REQ
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: received_cm_service_request = true
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: still awaiting first request after a CM Service Request
- cm_service_result_sent == 0
-- a USSD request is serviced
- expecting USSD:
- Your extension is 42342
- MSC <--RAN_UTRAN_IU-- MS: GSM48_PDISC_NC_SS:0x3b
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_PDISC_NC_SS:0x3b (0xb:0x3b)
-DMM MSISDN:42342: rx msg GSM48_PDISC_NC_SS:0x3b: received_cm_service_request changes to false
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM USSD: Own number requested
-DMM MSISDN:42342: MSISDN = 42342
-DMSC msc_tx 43 bytes to MSISDN:42342 via RAN_UTRAN_IU
-- DTAP --RAN_UTRAN_IU--> MS: GSM48_PDISC_NC_SS:0x2a: 8b2a1c27a225020100302002013b301b04010f0416d9775d0e2ae3e965f73cfd7683d273104d36a3c91a0d
-- DTAP matches expected message
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- all requests serviced, conn has been released
- llist_count(&net->subscr_conns) == 0
----
-- an SMS is sent, MS is paged
-DREF VLR subscr MSISDN:42342 usage increases to: 2
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:42342 usage increases to: 3
-DMM Subscriber MSISDN:42342 not paged yet, start paging.
- RAN_UTRAN_IU sends out paging request to IMSI 901700000010650, TMSI 0x03020100, LAC 0
- strcmp(paging_expecting_imsi, imsi) == 0
-DREF VLR subscr MSISDN:42342 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
- paging_sent == 1
- paging_stopped == 0
-- the subscriber and its pending request should remain
-DREF VLR subscr MSISDN:42342 usage increases to: 4
- llist_count(&vsub->cs.requests) == 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
-- MS replies with Paging Response, and VLR sends Auth Request with third key
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_RR_PAG_RESP
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_RR_PAG_RESP (0x6:0x27)
-DRR PAGING RESPONSE: MI(IMSI)=901700000010650
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Allocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: is child of Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: rev=R99 net=UTRAN Auth+Ciph
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: Received Event PR_ARQ_E_START
-DREF VLR subscr MSISDN:42342 usage increases to: 4
-DREF VLR subscr MSISDN:42342 usage increases to: 5
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: proc_arq_vlr_fn_post_imsi()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_INIT}: state_chg to PR_ARQ_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=2
-- sending UMTS Auth Request for MSISDN:42342: tuple use_count=1 key_seq=2 auth_types=0x3 and...
-- ...rand=efa9c29a9742148d5c9070348716e1bb
-- ...autn=f9375e6d41e1000096e7fe4ff1c27e39
-- ...expecting res=706f996719ba609c
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:42342: MSC conn use - 1 == 1
- auth_request_sent == 1
-- needs auth, not yet accepted
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- MS sends Authen Response, VLR accepts and sends SecurityModeControl
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM MSISDN:42342: MM R99 AUTHENTICATION RESPONSE (res = 706f996719ba609c)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(MSISDN:42342) received res: 70 6f 99 67 19 ba 60 9c
-DVLR SUBSCR(MSISDN:42342) AUTH established UMTS security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent Process_Access_Request_VLR(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: Received Event PR_ARQ_E_AUTH_RES
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: got VLR_AUTH_RES_PASSED
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: _proc_arq_vlr_node2()
-- sending SecurityModeControl for MSISDN:42342
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_AUTH}: state_chg to PR_ARQ_S_WAIT_CIPH
-DMM MSISDN:42342: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF MSISDN:42342: MSC conn use - 1 == 1
- cipher_mode_cmd_sent == 1
- paging_stopped == 0
-- MS sends SecurityModeControl acceptance, VLR accepts and sends SMS
-DIUCS Looking for IuCS subscriber: conn_id 2a
-DIUCS 0: MSISDN:42342 Iu conn_id 42
-DIUCS subscribers registered: 1
-DIUCS Found IuCS subscriber for conn_id 2a
-DIUCS IuCS security mode complete for MSISDN:42342
-DMM <- SECURITY MODE COMPLETE MSISDN:42342
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: Received Event PR_ARQ_E_CIPH_RES
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_ciph()
-DIUCS MSISDN:42342: tx CommonID 901700000010650
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_node2_post_vlr()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_pres()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_trace()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: _proc_arq_vlr_post_imei()
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: proc_arq_fsm_done(VLR_PR_ARQ_RES_PASSED)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_WAIT_CIPH}: state_chg to PR_ARQ_S_DONE
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Process Access Request result: VLR_PR_ARQ_RES_PASSED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_PAGING_RESP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DPAG Paging success for MSISDN:42342 (event=0)
-DPAG Calling paging cbfn.
-DREF VLR subscr MSISDN:42342 usage increases to: 5
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DMSC msc_tx 91 bytes to MSISDN:42342 via RAN_UTRAN_IU
-- DTAP --RAN_UTRAN_IU--> MS: GSM48_PDISC_SMS:0x01: 09015801000791447758100650004c0005802443f2000007101000000000445079da1e1ee7416937485e9ea7c965373d1d6683c270383b3d0ed3d36ff71c949e83c22072799e9687c5ec32a81d96afcbf4b4fb0c7ac3e9e9b7db05
-- DTAP matches expected message
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: connection still has active transaction: GSM48_PDISC_SMS
- paging_stopped == 1
-- SMS was delivered, no requests pending for subscr
-DREF VLR subscr MSISDN:42342 usage increases to: 5
- llist_count(&vsub->cs.requests) == 0
-DREF VLR subscr MSISDN:42342 usage decreases to: 4
-- conn is still open to wait for SMS ack dance
- llist_count(&net->subscr_conns) == 1
-- MS replies with CP-ACK for received SMS
- MSC <--RAN_UTRAN_IU-- MS: GSM48_PDISC_SMS:0x04
-DREF MSISDN:42342: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x04 (0x9:0x4)
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_COMMUNICATING
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: connection still has active transaction: GSM48_PDISC_SMS
-DREF MSISDN:42342: MSC conn use - 1 == 2
- llist_count(&net->subscr_conns) == 1
-- MS also sends RP-ACK, MSC in turn sends CP-ACK for that
- MSC <--RAN_UTRAN_IU-- MS: GSM48_PDISC_SMS:0x01
-DREF MSISDN:42342: MSC conn use + 1 == 3
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_COMMUNICATING
-DMSC msc_tx 2 bytes to MSISDN:42342 via RAN_UTRAN_IU
-- DTAP --RAN_UTRAN_IU--> MS: GSM48_PDISC_SMS:0x04: 0904
-- DTAP matches expected message
-DREF VLR subscr MSISDN:42342 usage decreases to: 3
-DREF VLR subscr MSISDN:42342 usage decreases to: 2
-DREF MSISDN:42342: MSC conn use - 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_COMMUNICATING}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Freeing instance
-DVLR Process_Access_Request_VLR(901700000010650){PR_ARQ_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
- dtap_tx_confirmed == 1
-- SMS is done, conn is gone
- llist_count(&net->subscr_conns) == 0
----
-- subscriber detaches
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_IMSI_DETACH_IND
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_IMSI_DETACH_IND (0x5:0x1)
-DMM IMSI DETACH INDICATION: MI(IMSI)=901700000010650
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DMM Subscriber MSISDN:42342 DETACHED
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-DREF VLR subscr MSISDN:42342 usage decreases to: 0
-DREF freeing VLR subscr MSISDN:42342
-DREF unknown: MSC conn use - 1 == 0
-DRLL Freeing subscriber connection with NULL subscriber
- llist_count(&net->subscr_conns) == 0
-===== test_umts_authen_utran: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_umts_authen_resync_geran
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL
-DMM LU/new-LAC: 0/0
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=GERAN Auth (no Ciph)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
-DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e41
-DVLR GSUP rx 111: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e41
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000010650) Received 1 auth tuples
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
-- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
-- ...autn=8704f5ba55f30000d2ee44b22c8ea919
-- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Failure with Resync cause, VLR sends GSUP to HLR to resync
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_FAIL
-DREF IMSI:901700000010650: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_FAIL (0x5:0x1c)
-DMM IMSI:901700000010650: MM R99 AUTHENTICATION SYNCH (AUTS = 979498b1f72d3e28c59fa2e72f9c)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_FAIL
-DVLR GSUP tx: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- gsup_tx_confirmed == 1
- auth_request_sent == 0
- lu_result_sent == 0
-- HLR replies with new tuples
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db
-DVLR GSUP rx 211: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000010650) Received 2 auth tuples
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: state_chg to VLR_SUB_AS_WAIT_RESP_RESYNC
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: got auth tuple: use_count=1 key_seq=0
-- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
-- ...rand=0f1feb1623e1bf626334e37ec448ac18
-- ...autn=02a83f62e9470000660d51afc75f169d
-- ...expecting res=1df5f0b4f22b696e
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends GSUP LU Req to HLR
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000010650: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000010650: MM R99 AUTHENTICATION RESPONSE (res = 1df5f0b4f22b696e)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000010650) received res: 1d f5 f0 b4 f2 2b 69 6e
-DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_ciph()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- gsup_tx_confirmed == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2
-DVLR GSUP rx 17: 10010809710000000156f00804032443f2
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR IMSI:901700000010650 has MSISDN:42342
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0
-DVLR GSUP rx 11: 06010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:42342, with TMSI 0x03020100
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 1
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:42342 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_GERAN_A-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:42342
-===== test_umts_authen_resync_geran: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-===== test_umts_authen_resync_utran
-- Location Update request causes a GSUP Send Auth Info request to HLR
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_LOC_UPD_REQUEST
- new conn
-DREF unknown: MSC conn use + 1 == 1
-DRLL Dispatching 04.08 message GSM48_MT_MM_LOC_UPD_REQUEST (0x5:0x8)
-DREF unknown: MSC conn use + 1 == 2
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Allocated
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: Received Event SUBSCR_CONN_E_START
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_INIT}: state_chg to SUBSCR_CONN_S_NEW
-DMM LOCATION UPDATING REQUEST: MI(IMSI)=901700000010650 type=NORMAL
-DMM LU/new-LAC: 0/0
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Allocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: is child of Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: rev=R99 net=UTRAN Auth+Ciph
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: Received Event VLR_ULA_E_UPDATE_LA
-DREF VLR subscr unknown usage increases to: 1
-DVLR set IMSI on subscriber; IMSI=901700000010650 id=901700000010650
-DVLR New subscr, IMSI: 901700000010650
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: vlr_loc_upd_node1()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_IDLE}: state_chg to VLR_ULA_S_WAIT_AUTH
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Allocated
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: is child of vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: Received Event VLR_AUTH_E_START
-DVLR GSUP tx: 08010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_AI
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- lu_result_sent == 0
-- from HLR, rx _SEND_AUTH_INFO_RESULT; VLR sends Auth Req to MS
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e41
-DVLR GSUP rx 111: 0a010809710000000156f00362201039fa2f4e3d523d8619a73b4f65c3e14d21049b36efdf2208059a4f668f6fbe39231027497388b6cb044648f396aa155b95ef2410f64735036e5871319c679f4742a75ea125108704f5ba55f30000d2ee44b22c8ea9192708e229c19e791f2e41
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000010650) Received 1 auth tuples
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_AI}: state_chg to VLR_SUB_AS_WAIT_RESP
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: got auth tuple: use_count=1 key_seq=0
-- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
-- ...rand=39fa2f4e3d523d8619a73b4f65c3e14d
-- ...autn=8704f5ba55f30000d2ee44b22c8ea919
-- ...expecting res=e229c19e791f2e41
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Failure with Resync cause, VLR sends GSUP to HLR to resync
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_FAIL
-DREF IMSI:901700000010650: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_FAIL (0x5:0x1c)
-DMM IMSI:901700000010650: MM R99 AUTHENTICATION SYNCH (AUTS = 979498b1f72d3e28c59fa2e72f9c)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: Received Event VLR_AUTH_E_MS_AUTH_FAIL
-DVLR GSUP tx: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d
-GSUP --> HLR: OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST: 08010809710000000156f0260e979498b1f72d3e28c59fa2e72f9c201039fa2f4e3d523d8619a73b4f65c3e14d
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP}: state_chg to VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- gsup_tx_confirmed == 1
- auth_request_sent == 0
- lu_result_sent == 0
-- HLR replies with new tuples
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db
-DVLR GSUP rx 211: 0a010809710000000156f0036220100f1feb1623e1bf626334e37ec448ac182104efde99da220814778c855c52373023108a90c769b7272f3bb7a1c1fbb1ea9349241043ffc1cf8c89a7fd6ab94bd8d6162cbf251002a83f62e9470000660d51afc75f169d27081df5f0b4f22b696e03622010ac21d34937b4e1142a2c757af294931921047818bfdc2208d175571f41f314a42310ff8edbceb6dd24799c77c3b9a6790c102410157c39022ca9d885a7f0766a7dfee44825108a43b91898e500002cf354c6f5d1f8c32708f748a7078f5018db
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: Received Event VLR_AUTH_E_HLR_SAI_ACK
-DVLR SUBSCR(IMSI:901700000010650) Received 2 auth tuples
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_NEEDS_AUTH_WAIT_SAI_RESYNC}: state_chg to VLR_SUB_AS_WAIT_RESP_RESYNC
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: got auth tuple: use_count=1 key_seq=0
-- sending UMTS Auth Request for IMSI:901700000010650: tuple use_count=1 key_seq=0 auth_types=0x3 and...
-- ...rand=0f1feb1623e1bf626334e37ec448ac18
-- ...autn=02a83f62e9470000660d51afc75f169d
-- ...expecting res=1df5f0b4f22b696e
-DREF VLR subscr IMSI:901700000010650 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT: vlr_gsupc_read_cb() returns 0
- auth_request_sent == 1
- lu_result_sent == 0
-- MS sends Authen Response, VLR accepts and sends SecurityModeControl
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_AUTH_RESP
-DREF IMSI:901700000010650: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_AUTH_RESP (0x5:0x14)
-DMM IMSI:901700000010650: MM R99 AUTHENTICATION RESPONSE (res = 1df5f0b4f22b696e)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Received Event VLR_AUTH_E_MS_AUTH_RESP
-DVLR SUBSCR(IMSI:901700000010650) received res: 1d f5 f0 b4 f2 2b 69 6e
-DVLR SUBSCR(IMSI:901700000010650) AUTH established UMTS security context
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: Authentication terminating with result VLR_AUTH_RES_PASSED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_WAIT_RESP_RESYNC}: state_chg to VLR_SUB_AS_AUTHENTICATED
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Freeing instance
-DVLR VLR_Authenticate(901700000010650){VLR_SUB_AS_AUTHENTICATED}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: Received Event VLR_ULA_E_AUTH_RES
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: vlr_loc_upd_post_auth()
-- sending SecurityModeControl for IMSI:901700000010650
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_AUTH}: state_chg to VLR_ULA_S_WAIT_CIPH
-DMM IMSI:901700000010650: bump: conn still being established (SUBSCR_CONN_S_NEW)
-DREF IMSI:901700000010650: MSC conn use - 1 == 1
- cipher_mode_cmd_sent == 1
- lu_result_sent == 0
-- MS sends SecurityModeControl acceptance, VLR accepts and sends GSUP LU Req to HLR
-DIUCS Looking for IuCS subscriber: conn_id 2a
-DIUCS 0: IMSI:901700000010650 Iu conn_id 42
-DIUCS subscribers registered: 1
-DIUCS Found IuCS subscriber for conn_id 2a
-DIUCS IuCS security mode complete for IMSI:901700000010650
-DMM <- SECURITY MODE COMPLETE IMSI:901700000010650
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: Received Event VLR_ULA_E_CIPH_RES
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_post_ciph()
-DIUCS IMSI:901700000010650: tx CommonID 901700000010650
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: vlr_loc_upd_node_4()
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_CIPH}: state_chg to VLR_ULA_S_WAIT_HLR_UPD
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Allocated
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: Received Event UPD_HLR_VLR_E_START
-DVLR GSUP tx: 04010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST: 04010809710000000156f0
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_INIT}: state_chg to UPD_HLR_VLR_S_WAIT_FOR_DATA
- gsup_tx_confirmed == 1
- lu_result_sent == 0
-- HLR sends _INSERT_DATA_REQUEST, VLR responds with _INSERT_DATA_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: 10010809710000000156f00804032443f2
-DVLR GSUP rx 17: 10010809710000000156f00804032443f2
-DREF VLR subscr IMSI:901700000010650 usage increases to: 2
-DVLR IMSI:901700000010650 has MSISDN:42342
-DVLR GSUP tx: 12010809710000000156f0
-GSUP --> HLR: OSMO_GSUP_MSGT_INSERT_DATA_RESULT: 12010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_INSERT_DATA_REQUEST: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 0
-- HLR also sends GSUP _UPDATE_LOCATION_RESULT
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: 06010809710000000156f0
-DVLR GSUP rx 11: 06010809710000000156f0
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_HLR_LU_RES
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: Received Event UPD_HLR_VLR_E_UPD_LOC_ACK
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_WAIT_FOR_DATA}: state_chg to UPD_HLR_VLR_S_DONE
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Freeing instance
-DVLR upd_hlr_vlr_fsm(901700000010650){UPD_HLR_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: Received Event VLR_ULA_E_UPD_HLR_COMPL
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_HLR_UPD}: state_chg to VLR_ULA_S_WAIT_LU_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Allocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: is child of vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: Received Event LU_COMPL_VLR_E_START
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_INIT}: state_chg to LU_COMPL_VLR_S_WAIT_SUB_PRES
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Allocated
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: is child of lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: Received Event SUB_PRES_VLR_E_START
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_INIT}: state_chg to SUB_PRES_VLR_S_DONE
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Removing from parent lu_compl_vlr_fsm(901700000010650)
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Freeing instance
-DVLR sub_pres_vlr_fsm(901700000010650){SUB_PRES_VLR_S_DONE}: Deallocated
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: Received Event LU_COMPL_VLR_E_SUB_PRES_COMPL
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: lu_compl_vlr_new_tmsi()
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_SUB_PRES}: state_chg to LU_COMPL_VLR_S_WAIT_TMSI_CNF
-- sending LU Accept for MSISDN:42342, with TMSI 0x03020100
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-<-- GSUP rx OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT: vlr_gsupc_read_cb() returns 0
- lu_result_sent == 1
-- a LU Accept with a new TMSI was sent, waiting for TMSI Realloc Compl
- llist_count(&net->subscr_conns) == 1
-msc_subscr_conn_is_accepted() == false
- requests shall be thwarted
-DRLL Dispatching 04.08 message GSM48_MT_CC_SETUP (0x3:0x5)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_CC_SETUP
-DRLL Dispatching 04.08 message unknown 0x33 (0x5:0x33)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: unknown 0x33
-DRLL Dispatching 04.08 message GSM48_MT_RR_SYSINFO_1 (0x6:0x19)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_MT_RR_SYSINFO_1
-DRLL Dispatching 04.08 message GSM48_PDISC_SMS:0x01 (0x9:0x1)
-DRLL subscr MSISDN:42342: Message not permitted for initial conn: GSM48_PDISC_SMS:0x01
-- even though the TMSI is not acked, we can already find the subscr with it
-DREF VLR subscr MSISDN:42342 usage increases to: 2
- vsub != NULL == 1
- strcmp(vsub->imsi, imsi) == 0
- vsub->tmsi_new == 0x03020100
- vsub->tmsi == 0xffffffff
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- MS sends TMSI Realloc Complete
- MSC <--RAN_UTRAN_IU-- MS: GSM48_MT_MM_TMSI_REALL_COMPL
-DREF MSISDN:42342: MSC conn use + 1 == 2
-DRLL Dispatching 04.08 message GSM48_MT_MM_TMSI_REALL_COMPL (0x5:0x1b)
-DMM TMSI Reallocation Completed. Subscriber: MSISDN:42342
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_NEW_TMSI_ACK
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: Received Event LU_COMPL_VLR_E_NEW_TMSI_ACK
-DREF VLR subscr MSISDN:42342 usage increases to: 2
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_WAIT_TMSI_CNF}: state_chg to LU_COMPL_VLR_S_DONE
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: Received Event VLR_ULA_E_LU_COMPL_SUCCESS
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Removing from parent vlr_lu_fsm(901700000010650)
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Freeing instance
-DVLR lu_compl_vlr_fsm(901700000010650){LU_COMPL_VLR_S_DONE}: Deallocated
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_WAIT_LU_COMPL}: state_chg to VLR_ULA_S_DONE
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: Received Event SUBSCR_CONN_E_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: SUBSCR_CONN_FROM_LU
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_NEW}: state_chg to SUBSCR_CONN_S_ACCEPTED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: Received Event SUBSCR_CONN_E_BUMP
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: bump: releasing conn
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_ACCEPTED}: state_chg to SUBSCR_CONN_S_RELEASED
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Terminating (cause = OSMO_FSM_TERM_PARENT)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Removing from parent Subscr_Conn(901700000010650)
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: fsm_lu_cleanup called with cause OSMO_FSM_TERM_PARENT
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Freeing instance
-DVLR vlr_lu_fsm(901700000010650){VLR_ULA_S_DONE}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 1
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Freeing instance
-DMM Subscr_Conn(901700000010650){SUBSCR_CONN_S_RELEASED}: Deallocated
-DREF MSISDN:42342: MSC conn use - 1 == 0
-DRLL subscr MSISDN:42342: Freeing subscriber connection
-DREF VLR subscr MSISDN:42342 usage decreases to: 1
-- LU was successful, and the conn has already been closed
- llist_count(&net->subscr_conns) == 0
-DREF freeing VLR subscr MSISDN:42342
-===== test_umts_authen_resync_utran: SUCCESS
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
-full talloc report on 'msgb' (total 0 bytes in 1 blocks)
-talloc_total_blocks(tall_bsc_ctx) == 9
-
diff --git a/tests/msc_vlr/msc_vlr_test_umts_authen.ok b/tests/msc_vlr/msc_vlr_test_umts_authen.ok
deleted file mode 100644
index a965a70ed..000000000
--- a/tests/msc_vlr/msc_vlr_test_umts_authen.ok
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/tests/msc_vlr/msc_vlr_tests.c b/tests/msc_vlr/msc_vlr_tests.c
deleted file mode 100644
index 0a485b4a9..000000000
--- a/tests/msc_vlr/msc_vlr_tests.c
+++ /dev/null
@@ -1,763 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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 <getopt.h>
-#include <stdlib.h>
-
-#include <osmocom/core/logging.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/core/msgb.h>
-#include <osmocom/core/application.h>
-#include <osmocom/gsm/protocol/gsm_04_11.h>
-#include <osmocom/gsm/gsup.h>
-#include <osmocom/ranap/iu_client.h>
-#include <openbsc/gsup_client.h>
-#include <openbsc/gsm_04_11.h>
-#include <openbsc/bsc_subscriber.h>
-#include <openbsc/debug.h>
-#include <openbsc/iucs_ranap.h>
-
-#include "msc_vlr_tests.h"
-
-bool _log_lines = false;
-
-struct gsm_network *net = NULL;
-
-struct gsm_bts *the_bts;
-
-const char *gsup_tx_expected = NULL;
-bool gsup_tx_confirmed;
-
-struct msgb *dtap_tx_expected = NULL;
-bool dtap_tx_confirmed;
-
-enum result_sent lu_result_sent;
-enum result_sent cm_service_result_sent;
-bool auth_request_sent;
-const char *auth_request_expect_rand;
-const char *auth_request_expect_autn;
-bool cipher_mode_cmd_sent;
-bool cipher_mode_cmd_sent_with_imeisv;
-
-struct msgb *msgb_from_hex(const char *label, uint16_t size, const char *hex)
-{
- struct msgb *msg = msgb_alloc(size, label);
- unsigned char *rc;
- msg->l2h = msg->head;
- rc = msgb_put(msg, osmo_hexparse(hex, msg->head, msgb_tailroom(msg)));
- OSMO_ASSERT(rc == msg->l2h);
- return msg;
-}
-
-const char *gh_type_name(struct gsm48_hdr *gh)
-{
- return gsm48_pdisc_msgtype_name(gsm48_hdr_pdisc(gh),
- gsm48_hdr_msg_type(gh));
-}
-
-const char *msg_type_name(struct msgb *msg)
-{
- return gh_type_name((void*)msg->data);
-}
-
-void dtap_expect_tx(const char *hex)
-{
- /* Has the previously expected dtap been received? */
- OSMO_ASSERT(!dtap_tx_expected);
- if (!hex)
- return;
- dtap_tx_expected = msgb_from_hex("dtap_tx_expected", 1024, hex);
- dtap_tx_confirmed = false;
-}
-
-void dtap_expect_tx_ussd(char *ussd_text)
-{
- uint8_t ussd_enc[128];
- int len;
- /* header */
- char ussd_msg_hex[128] = "8b2a1c27a225020100302002013b301b04010f0416";
-
- log("expecting USSD:\n %s", ussd_text);
- /* append encoded USSD text */
- gsm_7bit_encode_n_ussd(ussd_enc, sizeof(ussd_enc), ussd_text,
- &len);
- strncat(ussd_msg_hex, osmo_hexdump_nospc(ussd_enc, len),
- sizeof(ussd_msg_hex) - strlen(ussd_msg_hex));
- dtap_expect_tx(ussd_msg_hex);
-}
-
-int vlr_gsupc_read_cb(struct gsup_client *gsupc, struct msgb *msg);
-
-void gsup_rx(const char *rx_hex, const char *expect_tx_hex)
-{
- int rc;
- struct msgb *msg;
- const char *label;
-
- gsup_expect_tx(expect_tx_hex);
-
- msg = msgb_from_hex("gsup", 1024, rx_hex);
- label = osmo_gsup_message_type_name(msg->l2h[0]);
- fprintf(stderr, "<-- GSUP rx %s: %s\n", label,
- osmo_hexdump_nospc(msgb_l2(msg), msgb_l2len(msg)));
- rc = vlr_gsupc_read_cb(net->vlr->gsup_client, msg);
- fprintf(stderr, "<-- GSUP rx %s: vlr_gsupc_read_cb() returns %d\n",
- label, rc);
- if (expect_tx_hex)
- OSMO_ASSERT(gsup_tx_confirmed);
- talloc_free(msg);
-}
-
-bool conn_exists(struct gsm_subscriber_connection *conn)
-{
- struct gsm_subscriber_connection *c;
- llist_for_each_entry(c, &net->subscr_conns, entry) {
- if (c == conn)
- return true;
- }
- return false;
-}
-
-enum ran_type rx_from_ran = RAN_GERAN_A;
-
-struct gsm_subscriber_connection *conn_new(void)
-{
- struct gsm_subscriber_connection *conn;
- conn = msc_subscr_con_allocate(net);
- conn->bts = the_bts;
- conn->via_ran = rx_from_ran;
- if (conn->via_ran == RAN_UTRAN_IU) {
- struct ranap_ue_conn_ctx *ue_ctx = talloc_zero(conn, struct ranap_ue_conn_ctx);
- *ue_ctx = (struct ranap_ue_conn_ctx){
- .conn_id = 42,
- };
- conn->iu.ue_ctx = ue_ctx;
- }
- return conn;
-}
-
-struct gsm_subscriber_connection *g_conn = NULL;
-
-void rx_from_ms(struct msgb *msg)
-{
- int rc;
-
- struct gsm48_hdr *gh = msgb_l3(msg);
-
- log("MSC <--%s-- MS: %s",
- ran_type_name(rx_from_ran),
- gh_type_name(gh));
-
- if (g_conn && !conn_exists(g_conn))
- g_conn = NULL;
-
- if (!g_conn) {
- log("new conn");
- g_conn = conn_new();
- rc = msc_compl_l3(g_conn, msg, 23);
- if (rc == BSC_API_CONN_POL_REJECT) {
- msc_subscr_con_free(g_conn);
- g_conn = NULL;
- }
- } else {
- if ((gsm48_hdr_pdisc(gh) == GSM48_PDISC_RR)
- && (gsm48_hdr_msg_type(gh) == GSM48_MT_RR_CIPH_M_COMPL))
- msc_cipher_mode_compl(g_conn, msg, 0);
- else
- msc_dtap(g_conn, 23, msg);
- }
-
- if (g_conn && !conn_exists(g_conn))
- g_conn = NULL;
-}
-
-void ms_sends_msg(const char *hex)
-{
- struct msgb *msg;
-
- msg = msgb_from_hex("ms_sends_msg", 1024, hex);
- msg->l1h = msg->l2h = msg->l3h = msg->data;
- rx_from_ms(msg);
- talloc_free(msg);
-}
-
-int ms_sends_msg_fake(uint8_t pdisc, uint8_t msg_type)
-{
- int rc;
- struct msgb *msg;
- struct gsm48_hdr *gh;
-
- msg = msgb_alloc(1024, "ms_sends_msg_fake");
- msg->l1h = msg->l2h = msg->l3h = msg->data;
-
- gh = (struct gsm48_hdr*)msgb_put(msg, sizeof(*gh));
- gh->proto_discr = pdisc;
- gh->msg_type = msg_type;
- /* some amount of data, whatever */
- msgb_put(msg, 123);
-
- rc = gsm0408_dispatch(g_conn, msg);
-
- talloc_free(msg);
- return rc;
-}
-
-void thwart_rx_non_initial_requests()
-{
- log("requests shall be thwarted");
- OSMO_ASSERT(ms_sends_msg_fake(GSM48_PDISC_CC, GSM48_MT_CC_SETUP) == -EACCES);
- OSMO_ASSERT(ms_sends_msg_fake(GSM48_PDISC_MM, 0x33 /* nonexistent */) == -EACCES);
- OSMO_ASSERT(ms_sends_msg_fake(GSM48_PDISC_RR, GSM48_MT_RR_SYSINFO_1) == -EACCES);
- OSMO_ASSERT(ms_sends_msg_fake(GSM48_PDISC_SMS, GSM411_MT_CP_DATA) == -EACCES);
-}
-
-void send_sms(struct vlr_subscr *receiver,
- struct vlr_subscr *sender,
- char *str)
-{
- struct gsm_sms *sms = sms_from_text(receiver, sender, 0, str);
- gsm411_send_sms_subscr(receiver, sms);
-}
-
-unsigned char next_rand_byte = 0;
-/* override, requires '-Wl,--wrap=RAND_bytes' */
-int __real_RAND_bytes(unsigned char *buf, int num);
-int __wrap_RAND_bytes(unsigned char *buf, int num)
-{
- int i;
- for (i = 0; i < num; i++)
- buf[i] = next_rand_byte++;
- return 1;
-}
-
-/* override, requires '-Wl,--wrap=gsm340_gen_scts' */
-void __real_gsm340_gen_scts(uint8_t *scts, time_t time);
-void __wrap_gsm340_gen_scts(uint8_t *scts, time_t time)
-{
- /* Remove the time to encode for deterministic test results */
- __real_gsm340_gen_scts(scts, 0);
-}
-
-const char *paging_expecting_imsi = NULL;
-uint32_t paging_expecting_tmsi;
-bool paging_sent;
-bool paging_stopped;
-
-void paging_expect_imsi(const char *imsi)
-{
- paging_expecting_imsi = imsi;
- paging_expecting_tmsi = GSM_RESERVED_TMSI;
-}
-
-void paging_expect_tmsi(uint32_t tmsi)
-{
- paging_expecting_tmsi = tmsi;
- paging_expecting_imsi = NULL;
-}
-
-int _paging_sent(enum ran_type via_ran, const char *imsi, uint32_t tmsi, uint32_t lac)
-{
- log("%s sends out paging request to IMSI %s, TMSI 0x%08x, LAC %u",
- ran_type_name(via_ran), imsi, tmsi, lac);
- OSMO_ASSERT(paging_expecting_imsi || (paging_expecting_tmsi != GSM_RESERVED_TMSI));
- if (paging_expecting_imsi)
- VERBOSE_ASSERT(strcmp(paging_expecting_imsi, imsi), == 0, "%d");
- if (paging_expecting_tmsi != GSM_RESERVED_TMSI) {
- VERBOSE_ASSERT(paging_expecting_tmsi, == tmsi, "0x%08x");
- }
- paging_sent = true;
- paging_stopped = false;
- return 1;
-}
-
-/* override, requires '-Wl,--wrap=ranap_iu_page_cs' */
-int __real_ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac);
-int __wrap_ranap_iu_page_cs(const char *imsi, const uint32_t *tmsi, uint16_t lac)
-{
- return _paging_sent(RAN_UTRAN_IU, imsi, tmsi ? *tmsi : GSM_RESERVED_TMSI, lac);
-}
-
-/* override, requires '-Wl,--wrap=a_iface_tx_paging' */
-int __real_a_iface_tx_paging(const char *imsi, uint32_t tmsi, uint16_t lac);
-int __wrap_a_iface_tx_paging(const char *imsi, uint32_t tmsi, uint16_t lac)
-{
- return _paging_sent(RAN_GERAN_A, imsi, tmsi, lac);
-}
-
-/* override, requires '-Wl,--wrap=msc_stop_paging' */
-void __real_msc_stop_paging(struct vlr_subscr *vsub);
-void __wrap_msc_stop_paging(struct vlr_subscr *vsub)
-{
- paging_stopped = true;
-}
-
-void clear_vlr()
-{
- struct vlr_subscr *vsub, *n;
- llist_for_each_entry_safe(vsub, n, &net->vlr->subscribers, list) {
- vlr_subscr_free(vsub);
- }
-
- net->authentication_required = false;
- net->a5_encryption = VLR_CIPH_NONE;
- net->vlr->cfg.check_imei_rqd = false;
- net->vlr->cfg.assign_tmsi = false;
- net->vlr->cfg.retrieve_imeisv = false;
-
- rx_from_ran = RAN_GERAN_A;
- auth_request_sent = false;
- auth_request_expect_rand = NULL;
- auth_request_expect_autn = NULL;
-
- next_rand_byte = 0;
-
- osmo_gettimeofday_override = false;
-}
-
-static struct log_info_cat test_categories[] = {
- [DMSC] = {
- .name = "DMSC",
- .description = "Mobile Switching Center",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DRLL] = {
- .name = "DRLL",
- .description = "A-bis Radio Link Layer (RLL)",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DMM] = {
- .name = "DMM",
- .description = "Layer3 Mobility Management (MM)",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DRR] = {
- .name = "DRR",
- .description = "Layer3 Radio Resource (RR)",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DCC] = {
- .name = "DCC",
- .description = "Layer3 Call Control (CC)",
- .enabled = 1, .loglevel = LOGL_NOTICE,
- },
- [DMM] = {
- .name = "DMM",
- .description = "Layer3 Mobility Management (MM)",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DVLR] = {
- .name = "DVLR",
- .description = "Visitor Location Register",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DREF] = {
- .name = "DREF",
- .description = "Reference Counting",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DPAG] = {
- .name = "DPAG",
- .description = "Paging Subsystem",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
- [DIUCS] = {
- .name = "DIUCS",
- .description = "Iu-CS Protocol",
- .enabled = 1, .loglevel = LOGL_DEBUG,
- },
-};
-
-static struct log_info info = {
- .cat = test_categories,
- .num_cat = ARRAY_SIZE(test_categories),
-};
-
-extern void *tall_bsc_ctx;
-
-int fake_mncc_recv(struct gsm_network *net, struct msgb *msg)
-{
- fprintf(stderr, "rx MNCC\n");
- return 0;
-}
-
-/* override, requires '-Wl,--wrap=gsup_client_create' */
-struct gsup_client *
-__real_gsup_client_create(const char *ip_addr, unsigned int tcp_port,
- gsup_client_read_cb_t read_cb,
- struct oap_client_config *oap_config);
-struct gsup_client *
-__wrap_gsup_client_create(const char *ip_addr, unsigned int tcp_port,
- gsup_client_read_cb_t read_cb,
- struct oap_client_config *oap_config)
-{
- struct gsup_client *gsupc;
- gsupc = talloc_zero(tall_bsc_ctx, struct gsup_client);
- OSMO_ASSERT(gsupc);
- return gsupc;
-}
-
-/* override, requires '-Wl,--wrap=gsup_client_send' */
-int __real_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg);
-int __wrap_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
-{
- const char *is = osmo_hexdump_nospc(msg->data, msg->len);
- fprintf(stderr, "GSUP --> HLR: %s: %s\n",
- osmo_gsup_message_type_name(msg->data[0]), is);
-
- OSMO_ASSERT(gsup_tx_expected);
- if (strcmp(gsup_tx_expected, is)) {
- fprintf(stderr, "Mismatch! Expected:\n%s\n", gsup_tx_expected);
- abort();
- }
-
- talloc_free(msg);
- gsup_tx_confirmed = true;
- gsup_tx_expected = NULL;
- return 0;
-}
-
-int _validate_dtap(struct msgb *msg, enum ran_type to_ran)
-{
- struct gsm48_hdr *gh = (void*)msg->data;
- btw("DTAP --%s--> MS: %s: %s",
- ran_type_name(to_ran), msg_type_name(msg),
- osmo_hexdump_nospc(msg->data, msg->len));
-
- OSMO_ASSERT(dtap_tx_expected);
- if (msg->len != dtap_tx_expected->len
- || memcmp(msg->data, dtap_tx_expected->data, msg->len)) {
- fprintf(stderr, "Mismatch! Expected:\n%s\n",
- osmo_hexdump_nospc(dtap_tx_expected->data,
- dtap_tx_expected->len));
- abort();
- }
-
- btw("DTAP matches expected message");
-
- talloc_free(msg);
- dtap_tx_confirmed = true;
- talloc_free(dtap_tx_expected);
- dtap_tx_expected = NULL;
- return 0;
-}
-
-/* override, requires '-Wl,--wrap=ranap_iu_tx' */
-int __real_ranap_iu_tx(struct msgb *msg, uint8_t sapi);
-int __wrap_ranap_iu_tx(struct msgb *msg, uint8_t sapi)
-{
- return _validate_dtap(msg, RAN_UTRAN_IU);
-}
-
-/* override, requires '-Wl,--wrap=a_iface_tx_dtap' */
-int __real_a_iface_tx_dtap(struct msgb *msg);
-int __wrap_a_iface_tx_dtap(struct msgb *msg)
-{
- return _validate_dtap(msg, RAN_GERAN_A);
-}
-
-static int fake_vlr_tx_lu_acc(void *msc_conn_ref, uint32_t send_tmsi)
-{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
- if (send_tmsi == GSM_RESERVED_TMSI)
- btw("sending LU Accept for %s", vlr_subscr_name(conn->vsub));
- else
- btw("sending LU Accept for %s, with TMSI 0x%08x",
- vlr_subscr_name(conn->vsub), send_tmsi);
- lu_result_sent |= RES_ACCEPT;
- return 0;
-}
-
-static int fake_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause)
-{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
- btw("sending LU Reject for %s, cause %u", vlr_subscr_name(conn->vsub), cause);
- lu_result_sent |= RES_REJECT;
- return 0;
-}
-
-static int fake_vlr_tx_cm_serv_acc(void *msc_conn_ref)
-{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
- btw("sending CM Service Accept for %s", vlr_subscr_name(conn->vsub));
- cm_service_result_sent |= RES_ACCEPT;
- return 0;
-}
-
-static int fake_vlr_tx_cm_serv_rej(void *msc_conn_ref,
- enum vlr_proc_arq_result result)
-{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
- btw("sending CM Service Reject for %s, result %s",
- vlr_subscr_name(conn->vsub),
- vlr_proc_arq_result_name(result));
- cm_service_result_sent |= RES_REJECT;
- return 0;
-}
-
-static int fake_vlr_tx_auth_req(void *msc_conn_ref, struct gsm_auth_tuple *at,
- bool send_autn)
-{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
- char *hex;
- bool ok = true;
- btw("sending %s Auth Request for %s: tuple use_count=%d key_seq=%d auth_types=0x%x and...",
- send_autn? "UMTS" : "GSM", vlr_subscr_name(conn->vsub),
- at->use_count, at->key_seq, at->vec.auth_types);
-
- hex = osmo_hexdump_nospc((void*)&at->vec.rand, sizeof(at->vec.rand));
- btw("...rand=%s", hex);
- if (!auth_request_expect_rand
- || strcmp(hex, auth_request_expect_rand) != 0) {
- ok = false;
- log("FAILURE: expected rand=%s",
- auth_request_expect_rand ? auth_request_expect_rand : "-");
- }
-
- if (send_autn) {
- hex = osmo_hexdump_nospc((void*)&at->vec.autn, sizeof(at->vec.autn));
- btw("...autn=%s", hex);
- if (!auth_request_expect_autn
- || strcmp(hex, auth_request_expect_autn) != 0) {
- ok = false;
- log("FAILURE: expected autn=%s",
- auth_request_expect_autn ? auth_request_expect_autn : "-");
- }
- } else if (auth_request_expect_autn) {
- ok = false;
- log("FAILURE: no AUTN sent, expected AUTN = %s",
- auth_request_expect_autn);
- }
-
- if (send_autn)
- btw("...expecting res=%s",
- osmo_hexdump_nospc((void*)&at->vec.res, at->vec.res_len));
- else
- btw("...expecting sres=%s",
- osmo_hexdump_nospc((void*)&at->vec.sres, sizeof(at->vec.sres)));
-
- auth_request_sent = ok;
- return 0;
-}
-
-static int fake_vlr_tx_auth_rej(void *msc_conn_ref)
-{
- struct gsm_subscriber_connection *conn = msc_conn_ref;
- btw("sending Auth Reject for %s", vlr_subscr_name(conn->vsub));
- return 0;
-}
-
-static int fake_vlr_tx_ciph_mode_cmd(void *msc_conn_ref, enum vlr_ciph ciph,
- bool retrieve_imeisv)
-{
- /* FIXME: we actually would like to see the message bytes checked here,
- * not possible while msc_vlr_set_ciph_mode() calls
- * gsm0808_cipher_mode() directly. When the MSCSPLIT is ready, check
- * the tx bytes in the sense of dtap_expect_tx() above. */
- struct gsm_subscriber_connection *conn = msc_conn_ref;
- switch (conn->via_ran) {
- case RAN_GERAN_A:
- btw("sending Ciphering Mode Command for %s: cipher=%s kc=%s"
- " retrieve_imeisv=%d",
- vlr_subscr_name(conn->vsub),
- vlr_ciph_name(conn->network->a5_encryption),
- osmo_hexdump_nospc(conn->vsub->last_tuple->vec.kc, 8),
- retrieve_imeisv);
- break;
- case RAN_UTRAN_IU:
- btw("sending SecurityModeControl for %s",
- vlr_subscr_name(conn->vsub));
- break;
- default:
- btw("UNKNOWN RAN TYPE %d", conn->via_ran);
- OSMO_ASSERT(false);
- return -1;
- }
- cipher_mode_cmd_sent = true;
- cipher_mode_cmd_sent_with_imeisv = retrieve_imeisv;
- return 0;
-}
-
-void ms_sends_security_mode_complete()
-{
- OSMO_ASSERT(g_conn);
- OSMO_ASSERT(g_conn->via_ran == RAN_UTRAN_IU);
- OSMO_ASSERT(g_conn->iu.ue_ctx);
- /* TODO mock IEs or call vlr callback directly */
- iucs_rx_ranap_event(g_conn->network, g_conn->iu.ue_ctx,
- RANAP_IU_EVENT_SECURITY_MODE_COMPLETE,
- NULL);
-}
-
-const struct timeval fake_time_start_time = { 123, 456 };
-
-void fake_time_start()
-{
- osmo_gettimeofday_override_time = fake_time_start_time;
- osmo_gettimeofday_override = true;
- fake_time_passes(0, 0);
-}
-
-void check_talloc(void *msgb_ctx, void *tall_bsc_ctx, int expected_blocks)
-{
- talloc_report_full(msgb_ctx, stderr);
- fprintf(stderr, "talloc_total_blocks(tall_bsc_ctx) == %zu\n",
- talloc_total_blocks(tall_bsc_ctx));
- if (talloc_total_blocks(tall_bsc_ctx) != expected_blocks)
- talloc_report_full(tall_bsc_ctx, stderr);
- fprintf(stderr, "\n");
-}
-
-static struct {
- bool verbose;
- int run_test_nr;
-} cmdline_opts = {
- .verbose = false,
- .run_test_nr = -1,
-};
-
-static void print_help(const char *program)
-{
- printf("Usage:\n"
- " %s [-v] [N [N...]]\n"
- "Options:\n"
- " -h --help show this text.\n"
- " -v --verbose print source file and line numbers\n"
- " N run only the Nth test (first test is N=1)\n",
- program
- );
-}
-
-static void handle_options(int argc, char **argv)
-{
- while (1) {
- int option_index = 0, c;
- static struct option long_options[] = {
- {"help", 0, 0, 'h'},
- {"verbose", 1, 0, 'v'},
- {0, 0, 0, 0}
- };
-
- c = getopt_long(argc, argv, "hv",
- long_options, &option_index);
- if (c == -1)
- break;
-
- switch (c) {
- case 'h':
- print_help(argv[0]);
- exit(0);
- case 'v':
- cmdline_opts.verbose = true;
- break;
- default:
- /* catch unknown options *as well as* missing arguments. */
- fprintf(stderr, "Error in command line options. Exiting.\n");
- exit(-1);
- break;
- }
- }
-}
-
-void *msgb_ctx = NULL;
-
-void run_tests(int nr)
-{
- int test_nr;
- nr --; /* arg's first test is 1, in here it's 0 */
- for (test_nr = 0; msc_vlr_tests[test_nr]; test_nr ++) {
- if (nr >= 0 && test_nr != nr)
- continue;
-
- if (cmdline_opts.verbose)
- fprintf(stderr, "(test nr %d)\n", test_nr + 1);
-
- msc_vlr_tests[test_nr]();
-
- if (cmdline_opts.verbose)
- fprintf(stderr, "(test nr %d)\n", test_nr + 1);
-
- check_talloc(msgb_ctx, tall_bsc_ctx, 9);
- } while(0);
-}
-
-int main(int argc, char **argv)
-{
- handle_options(argc, argv);
-
- tall_bsc_ctx = talloc_named_const(NULL, 0, "subscr_conn_test_ctx");
- msgb_ctx = msgb_talloc_ctx_init(tall_bsc_ctx, 0);
- osmo_init_logging(&info);
-
- _log_lines = cmdline_opts.verbose;
-
- OSMO_ASSERT(osmo_stderr_target);
- log_set_use_color(osmo_stderr_target, 0);
- log_set_print_timestamp(osmo_stderr_target, 0);
- log_set_print_filename(osmo_stderr_target, _log_lines? 1 : 0);
- log_set_print_category(osmo_stderr_target, 1);
-
- net = gsm_network_init(tall_bsc_ctx, 1, 1, fake_mncc_recv);
- net->gsup_server_addr_str = talloc_strdup(net, "no_gsup_server");
- net->gsup_server_port = 0;
-
- osmo_fsm_log_addr(false);
- OSMO_ASSERT(msc_vlr_alloc(net) == 0);
- OSMO_ASSERT(msc_vlr_start(net) == 0);
- OSMO_ASSERT(net->vlr);
- OSMO_ASSERT(net->vlr->gsup_client);
- msc_subscr_conn_init();
-
- net->vlr->ops.tx_lu_acc = fake_vlr_tx_lu_acc;
- net->vlr->ops.tx_lu_rej = fake_vlr_tx_lu_rej;
- net->vlr->ops.tx_cm_serv_acc = fake_vlr_tx_cm_serv_acc;
- net->vlr->ops.tx_cm_serv_rej = fake_vlr_tx_cm_serv_rej;
- net->vlr->ops.tx_auth_req = fake_vlr_tx_auth_req;
- net->vlr->ops.tx_auth_rej = fake_vlr_tx_auth_rej;
- net->vlr->ops.set_ciph_mode = fake_vlr_tx_ciph_mode_cmd;
-
- clear_vlr();
-
- if (optind >= argc)
- run_tests(-1);
- else {
- int arg;
- long int nr;
- for (arg = optind; arg < argc; arg++) {
- nr = strtol(argv[arg], NULL, 10);
- if (errno) {
- fprintf(stderr, "Invalid argument: %s\n",
- argv[arg]);
- exit(1);
- }
-
- run_tests(nr);
- }
- }
-
- printf("Done\n");
-
- talloc_free(the_bts);
-
- check_talloc(msgb_ctx, tall_bsc_ctx, 9);
- return 0;
-}
diff --git a/tests/msc_vlr/msc_vlr_tests.h b/tests/msc_vlr/msc_vlr_tests.h
deleted file mode 100644
index ae0f83c9a..000000000
--- a/tests/msc_vlr/msc_vlr_tests.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Osmocom MSC+VLR end-to-end tests */
-
-/* (C) 2017 by sysmocom s.f.m.c. GmbH <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/>.
- *
- */
-
-#pragma once
-
-#include <stdbool.h>
-#include <stdio.h>
-
-#include <openbsc/gsm_data.h>
-#include <openbsc/osmo_msc.h>
-#include <openbsc/vlr.h>
-
-extern bool _log_lines;
-#define _log(fmt, args...) do { \
- if (_log_lines) \
- fprintf(stderr, " %4d:%s: " fmt "\n", \
- __LINE__, __FILE__, ## args ); \
- else \
- fprintf(stderr, fmt "\n", ## args ); \
- } while (false)
-
-/* btw means "by the way", the test tells the log what's happening.
- * BTW() marks a larger section, btw() is the usual logging. */
-#define BTW(fmt, args...) _log("---\n- " fmt, ## args )
-#define btw(fmt, args...) _log("- " fmt, ## args )
-#define log(fmt, args...) _log(" " fmt, ## args )
-
-#define comment_start() fprintf(stderr, "===== %s\n", __func__);
-#define comment_end() fprintf(stderr, "===== %s: SUCCESS\n\n", __func__);
-
-extern struct gsm_subscriber_connection *g_conn;
-extern struct gsm_network *net;
-extern struct gsm_bts *the_bts;
-extern void *msgb_ctx;
-
-extern enum ran_type rx_from_ran;
-
-extern const char *gsup_tx_expected;
-extern bool gsup_tx_confirmed;
-
-extern struct msgb *dtap_tx_expected;
-extern bool dtap_tx_confirmed;
-
-enum result_sent {
- RES_NONE = 0,
- RES_ACCEPT = 1,
- RES_REJECT = 2,
-};
-extern enum result_sent lu_result_sent;
-extern enum result_sent cm_service_result_sent;
-
-extern bool auth_request_sent;
-extern const char *auth_request_expect_rand;
-extern const char *auth_request_expect_autn;
-
-extern bool cipher_mode_cmd_sent;
-extern bool cipher_mode_cmd_sent_with_imeisv;
-
-extern bool paging_sent;
-extern bool paging_stopped;
-
-struct msc_vlr_test_cmdline_opts {
- bool verbose;
- int run_test_nr;
-};
-
-typedef void (* msc_vlr_test_func_t )(void);
-extern msc_vlr_test_func_t msc_vlr_tests[];
-
-struct msgb *msgb_from_hex(const char *label, uint16_t size, const char *hex);
-
-void clear_vlr();
-bool conn_exists(struct gsm_subscriber_connection *conn);
-
-void dtap_expect_tx(const char *hex);
-void dtap_expect_tx_ussd(char *ussd_text);
-void paging_expect_imsi(const char *imsi);
-void paging_expect_tmsi(uint32_t tmsi);
-
-void ms_sends_msg(const char *hex);
-void ms_sends_security_mode_complete();
-void gsup_rx(const char *rx_hex, const char *expect_tx_hex);
-void send_sms(struct vlr_subscr *receiver,
- struct vlr_subscr *sender,
- char *str);
-
-void thwart_rx_non_initial_requests();
-
-void check_talloc(void *msgb_ctx, void *tall_bsc_ctx, int expected_blocks);
-
-#define EXPECT_ACCEPTED(expect_accepted) do { \
- if (g_conn) \
- OSMO_ASSERT(conn_exists(g_conn)); \
- bool accepted = msc_subscr_conn_is_accepted(g_conn); \
- fprintf(stderr, "msc_subscr_conn_is_accepted() == %s\n", \
- accepted ? "true" : "false"); \
- OSMO_ASSERT(accepted == expect_accepted); \
- } while (false)
-
-#define VERBOSE_ASSERT(val, expect_op, fmt) \
- do { \
- log(#val " == " fmt, (val)); \
- OSMO_ASSERT((val) expect_op); \
- } while (0);
-
-#define EXPECT_CONN_COUNT(N) VERBOSE_ASSERT(llist_count(&net->subscr_conns), == N, "%d")
-
-#define gsup_expect_tx(hex) do \
-{ \
- if (gsup_tx_expected) { \
- log("Previous expected GSUP tx was not confirmed!"); \
- OSMO_ASSERT(!gsup_tx_expected); \
- } \
- if (!hex) \
- break; \
- gsup_tx_expected = hex; \
- gsup_tx_confirmed = false; \
-} while (0)
-
-void fake_time_start();
-
-/* as macro to get the test file's source line number */
-#define fake_time_passes(secs, usecs) do \
-{ \
- struct timeval diff; \
- osmo_gettimeofday_override_add(secs, usecs); \
- timersub(&osmo_gettimeofday_override_time, &fake_time_start_time, &diff); \
- btw("Total time passed: %d.%06d s", \
- (int)diff.tv_sec, (int)diff.tv_usec); \
- osmo_timers_prepare(); \
- osmo_timers_update(); \
-} while (0)
-
-extern const struct timeval fake_time_start_time;
diff --git a/tests/nanobts_omlattr/Makefile.am b/tests/nanobts_omlattr/Makefile.am
deleted file mode 100644
index b03d50cc1..000000000
--- a/tests/nanobts_omlattr/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(NULL)
-
-noinst_PROGRAMS = \
- nanobts_omlattr_test \
- $(NULL)
-
-EXTRA_DIST = \
- nanobts_omlattr_test.ok \
- $(NULL)
-
-nanobts_omlattr_test_SOURCES = \
- nanobts_omlattr_test.c \
- $(NULL)
-
-nanobts_omlattr_test_LDADD = \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libmsc/libmsc.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- -ldbi \
- $(NULL)
diff --git a/tests/nanobts_omlattr/nanobts_omlattr_test.c b/tests/nanobts_omlattr/nanobts_omlattr_test.c
deleted file mode 100644
index ee138b8f7..000000000
--- a/tests/nanobts_omlattr/nanobts_omlattr_test.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/* Test OML attribute generator */
-
-/* (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
- * All Rights Reserved
- *
- * Author: Philipp Maier
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <openbsc/gprs_llc_xid.h>
-#include <openbsc/debug.h>
-#include <openbsc/gsm_data.h>
-#include <openbsc/bts_ipaccess_nanobts_omlattr.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-#include <osmocom/core/application.h>
-
-#include <stdio.h>
-#include <string.h>
-
-struct gsm_bts_model bts_model_nanobts = {
- .type = GSM_BTS_TYPE_NANOBTS,
- .name = "nanobts",
- .start = NULL,
- .oml_rcvmsg = NULL,
- .e1line_bind_ops = NULL,
- .nm_att_tlvdef = {
- .def = {
- /* ip.access specifics */
- [NM_ATT_IPACC_DST_IP] = {TLV_TYPE_FIXED, 4},
- [NM_ATT_IPACC_DST_IP_PORT] =
- {TLV_TYPE_FIXED, 2},
- [NM_ATT_IPACC_STREAM_ID] = {TLV_TYPE_TV,},
- [NM_ATT_IPACC_SEC_OML_CFG] =
- {TLV_TYPE_FIXED, 6},
- [NM_ATT_IPACC_IP_IF_CFG] =
- {TLV_TYPE_FIXED, 8},
- [NM_ATT_IPACC_IP_GW_CFG] =
- {TLV_TYPE_FIXED, 12},
- [NM_ATT_IPACC_IN_SERV_TIME] =
- {TLV_TYPE_FIXED, 4},
- [NM_ATT_IPACC_LOCATION] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_PAGING_CFG] =
- {TLV_TYPE_FIXED, 2},
- [NM_ATT_IPACC_UNIT_ID] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_UNIT_NAME] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_SNMP_CFG] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_PRIM_OML_CFG_LIST] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_NV_FLAGS] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_FREQ_CTRL] =
- {TLV_TYPE_FIXED, 2},
- [NM_ATT_IPACC_PRIM_OML_FB_TOUT] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_CUR_SW_CFG] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_TIMING_BUS] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_CGI] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_RAC] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_OBJ_VERSION] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_GPRS_PAGING_CFG] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_NSEI] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_BVCI] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_NSVCI] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_NS_CFG] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_BSSGP_CFG] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_NS_LINK_CFG] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_RLC_CFG] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_ALM_THRESH_LIST] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_MONIT_VAL_LIST] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_TIB_CONTROL] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_SUPP_FEATURES] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_CODING_SCHEMES] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_RLC_CFG_2] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_HEARTB_TOUT] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_UPTIME] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_RLC_CFG_3] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_SSL_CFG] = {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_SEC_POSSIBLE] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_IML_SSL_STATE] =
- {TLV_TYPE_TL16V},
- [NM_ATT_IPACC_REVOC_DATE] = {TLV_TYPE_TL16V},
- },
- },
-};
-
-static void test_nanobts_attr_bts_get(struct gsm_bts *bts, uint8_t *expected)
-{
- struct msgb *msgb;
-
- printf("Testing nanobts_attr_bts_get()...\n");
-
- msgb = nanobts_attr_bts_get(bts);
- printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len));
- printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len));
- OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0);
- msgb_free(msgb);
-
- printf("ok.\n");
- printf("\n");
-}
-
-static void test_nanobts_attr_nse_get(struct gsm_bts *bts, uint8_t *expected)
-{
- struct msgb *msgb;
-
- printf("Testing nanobts_attr_nse_get()...\n");
-
- msgb = nanobts_attr_nse_get(bts);
- printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len));
- printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len));
- OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0);
- msgb_free(msgb);
-
- printf("ok.\n");
- printf("\n");
-}
-
-static void test_nanobts_attr_cell_get(struct gsm_bts *bts, uint8_t *expected)
-{
- struct msgb *msgb;
-
- printf("Testing nanobts_attr_cell_get()...\n");
-
- msgb = nanobts_attr_cell_get(bts);
- printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len));
- printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len));
- OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0);
- msgb_free(msgb);
-
- printf("ok.\n");
- printf("\n");
-}
-
-static void test_nanobts_attr_nscv_get(struct gsm_bts *bts, uint8_t *expected)
-{
- struct msgb *msgb;
-
- printf("Testing nanobts_attr_nscv_get()...\n");
-
- msgb = nanobts_attr_nscv_get(bts);
- printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len));
- printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len));
- OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0);
- msgb_free(msgb);
-
- printf("ok.\n");
- printf("\n");
-}
-
-static void test_nanobts_attr_radio_get(struct gsm_bts *bts,
- struct gsm_bts_trx *trx,
- uint8_t *expected)
-{
- struct msgb *msgb;
-
- printf("Testing nanobts_attr_nscv_get()...\n");
-
- msgb = nanobts_attr_radio_get(bts, trx);
- printf("result= %s\n", osmo_hexdump_nospc(msgb->data, msgb->len));
- printf("expected=%s\n", osmo_hexdump_nospc(expected, msgb->len));
- OSMO_ASSERT(memcmp(msgb->data, expected, msgb->len) == 0);
- msgb_free(msgb);
-
- printf("ok.\n");
- printf("\n");
-}
-
-int main(int argc, char **argv)
-{
- void *ctx;
-
- struct gsm_bts *bts;
- struct gsm_network *net;
- struct gsm_bts_trx *trx;
-
- ctx = talloc_named_const(NULL, 0, "ctx");
-
- /* Allocate environmental structs (bts, net, trx) */
- net = talloc_zero(ctx, struct gsm_network);
- INIT_LLIST_HEAD(&net->bts_list);
- gsm_bts_model_register(&bts_model_nanobts);
- bts = gsm_bts_alloc_register(net, GSM_BTS_TYPE_NANOBTS, 63);
- OSMO_ASSERT(bts);
- trx = talloc_zero(ctx, struct gsm_bts_trx);
-
- /* Parameters needed by nanobts_attr_bts_get() */
- bts->rach_b_thresh = -1;
- bts->rach_ldavg_slots = -1;
- bts->c0->arfcn = 866;
- bts->cell_identity = 1337;
- bts->network->country_code = 1;
- bts->network->network_code = 1;
- bts->location_area_code = 1;
- bts->gprs.rac = 0;
- uint8_t attr_bts_expected[] =
- { 0x19, 0x55, 0x5b, 0x61, 0x67, 0x6d, 0x73, 0x18, 0x06, 0x0e, 0x00,
- 0x02, 0x01, 0x20, 0x33, 0x1e, 0x24, 0x24, 0xa8, 0x34, 0x21,
- 0xa8, 0x1f, 0x3f, 0x25,
- 0x00, 0x01, 0x0a, 0x0c, 0x0a, 0x0b, 0x01, 0x2a, 0x0a, 0x2b,
- 0x03, 0xe8, 0x0a, 0x80,
- 0x23, 0x0a, 0x08, 0x03, 0x62, 0x09, 0x3f, 0x99, 0x00, 0x07,
- 0x00, 0xf1, 0x10, 0x00,
- 0x01, 0x05, 0x39
- };
-
- /* Parameters needed to test nanobts_attr_nse_get() */
- bts->gprs.nse.nsei = 101;
- uint8_t attr_nse_expected[] =
- { 0x9d, 0x00, 0x02, 0x00, 0x65, 0xa0, 0x00, 0x07, 0x03, 0x03, 0x03,
- 0x03, 0x1e, 0x03, 0x0a, 0xa1, 0x00, 0x0b, 0x03, 0x03, 0x03,
- 0x03, 0x03, 0x0a, 0x03,
- 0x0a, 0x03, 0x0a, 0x03
- };
-
- /* Parameters needed to test nanobts_attr_cell_get() */
- bts->gprs.rac = 0x00;
- bts->gprs.cell.bvci = 2;
- bts->gprs.mode = BTS_GPRS_GPRS;
- uint8_t attr_cell_expected[] =
- { 0x9a, 0x00, 0x01, 0x00, 0x9c, 0x00, 0x02, 0x05, 0x03, 0x9e, 0x00,
- 0x02, 0x00, 0x02, 0xa3, 0x00, 0x09, 0x14, 0x05, 0x05, 0xa0,
- 0x05, 0x0a, 0x04, 0x08,
- 0x0f, 0xa8, 0x00, 0x02, 0x0f, 0x00, 0xa9, 0x00, 0x05, 0x00,
- 0xfa, 0x00, 0xfa, 0x02
- };
-
- /* Parameters needed to test nanobts_attr_nscv_get() */
- bts->gprs.nsvc[0].nsvci = 0x65;
- bts->gprs.nsvc[0].remote_port = 0x59d8;
- bts->gprs.nsvc[0].remote_ip = 0x0a090165;
- bts->gprs.nsvc[0].local_port = 0x5a3c;
- uint8_t attr_nscv_expected[] =
- { 0x9f, 0x00, 0x02, 0x00, 0x65, 0xa2, 0x00, 0x08, 0x59, 0xd8, 0x0a,
- 0x09, 0x01, 0x65, 0x5a, 0x3c
- };
-
- /* Parameters needed to test nanobts_attr_radio_get() */
- trx->arfcn = 866;
- trx->max_power_red = 22;
- bts->c0->max_power_red = 22;
- uint8_t attr_radio_expected[] =
- { 0x2d, 0x0b, 0x05, 0x00, 0x02, 0x03, 0x62 };
-
- /* Run tests */
- test_nanobts_attr_bts_get(bts, attr_bts_expected);
- test_nanobts_attr_nse_get(bts, attr_nse_expected);
- test_nanobts_attr_cell_get(bts, attr_cell_expected);
- test_nanobts_attr_nscv_get(bts, attr_nscv_expected);
- test_nanobts_attr_radio_get(bts, trx, attr_radio_expected);
-
- printf("Done\n");
- talloc_free(bts);
- talloc_free(net);
- talloc_free(trx);
- talloc_report_full(ctx, stderr);
- OSMO_ASSERT(talloc_total_blocks(ctx) == 1);
- return 0;
-}
-
-/* stubs */
-struct osmo_prim_hdr;
-int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx)
-{
- abort();
-}
diff --git a/tests/nanobts_omlattr/nanobts_omlattr_test.ok b/tests/nanobts_omlattr/nanobts_omlattr_test.ok
deleted file mode 100644
index 91b655f8f..000000000
--- a/tests/nanobts_omlattr/nanobts_omlattr_test.ok
+++ /dev/null
@@ -1,26 +0,0 @@
-Testing nanobts_attr_bts_get()...
-result= 19555b61676d7318060e00020120331e2424a83421a81f3f2500010a0c0a0b012a0a2b03e80a80230a080362093f99000700f11000010539
-expected=19555b61676d7318060e00020120331e2424a83421a81f3f2500010a0c0a0b012a0a2b03e80a80230a080362093f99000700f11000010539
-ok.
-
-Testing nanobts_attr_nse_get()...
-result= 9d00020065a00007030303031e030aa1000b03030303030a030a030a03
-expected=9d00020065a00007030303031e030aa1000b03030303030a030a030a03
-ok.
-
-Testing nanobts_attr_cell_get()...
-result= 9a0001009c000205039e00020002a30009140505a0050a04080fa800020f00a9000500fa00fa02
-expected=9a0001009c000205039e00020002a30009140505a0050a04080fa800020f00a9000500fa00fa02
-ok.
-
-Testing nanobts_attr_nscv_get()...
-result= 9f00020065a2000859d80a0901655a3c
-expected=9f00020065a2000859d80a0901655a3c
-ok.
-
-Testing nanobts_attr_nscv_get()...
-result= 2d0b0500020362
-expected=2d0b0500020362
-ok.
-
-Done
diff --git a/tests/slhc/Makefile.am b/tests/slhc/Makefile.am
deleted file mode 100644
index 32a3cc447..000000000
--- a/tests/slhc/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS=-Wall -ggdb3 $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBCARES_CFLAGS)
-
-EXTRA_DIST = slhc_test.ok
-
-noinst_PROGRAMS = slhc_test
-
-slhc_test_SOURCES = slhc_test.c
-
-slhc_test_LDADD = \
- $(top_builddir)/src/gprs/slhc.o \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS)
-
-
diff --git a/tests/slhc/slhc_test.c b/tests/slhc/slhc_test.c
deleted file mode 100644
index d2e1cd9dc..000000000
--- a/tests/slhc/slhc_test.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/* Test SLHC/RFC1144 TCP/IP Header compression/decompression */
-
-/* (C) 2016 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
- * All Rights Reserved
- *
- * Author: Philipp Maier
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <openbsc/slhc.h>
-#include <openbsc/debug.h>
-
-#include <osmocom/core/talloc.h>
-#include <osmocom/core/utils.h>
-
-#include <osmocom/core/application.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <arpa/inet.h>
-
-/* Number of compression slots (S0-1) */
-#define SLOTS 8
-
-/* Maximum packet bytes to display */
-#define DISP_MAX_BYTES 100
-
-/* Sample packets to test with */
-#define PACKETS_LEN 15
-char *packets[] = {
- /* With TCP Option 10 (Timestamps) in place (forces UNCOMPRESSED_TCP) */
- "4510004046dd40004006a9a7c0a8646ec0a864640017ad8b81980100f3ac984d801800e32a1600000101080a000647de06d1bf5efffd18fffd20fffd23fffd27",
- "4510005b46de40004006a98bc0a8646ec0a864640017ad8b8198010cf3ac984d801800e3867500000101080a000647df06d1bf61fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0",
- "4510003746df40004006a9aec0a8646ec0a864640017ad8b81980133f3ac989f801800e35fd700000101080a000647e106d1bf63fffd01",
- "4510003746e040004006a9adc0a8646ec0a864640017ad8b81980136f3ac98a2801800e35fd200000101080a000647e106d1bf64fffb01",
- "4510007446e140004006a96fc0a8646ec0a864640017ad8b81980139f3ac98a5801800e37b9b00000101080a000647e206d1bf640d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a0d0a",
- "4510004246e240004006a9a0c0a8646ec0a864640017ad8b81980179f3ac98a5801800e3dab000000101080a000647ec06d1bf6f706f6c6c7578206c6f67696e3a20",
- /* Regular TCP packets (COMPRESSED_TCP) */
- "4510003446dd40004006a9b3c0a8646ec0a864640017ad8b81980100f3ac984d501800e371410000fffd18fffd20fffd23fffd27",
- "4510004f46de40004006a997c0a8646ec0a864640017ad8b8198010cf3ac984d501800e3cda40000fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0",
- "4510002b46df40004006a9bac0a8646ec0a864640017ad8b81980133f3ac989f501800e3a70a0000fffd01",
- "4510002b46e040004006a9b9c0a8646ec0a864640017ad8b81980136f3ac98a2501800e3a7060000fffb01",
- "4510006846e140004006a97bc0a8646ec0a864640017ad8b81980139f3ac98a5501800e3c2d000000d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a0d0a",
- "4510003646e240004006a9acc0a8646ec0a864640017ad8b81980179f3ac98a5501800e321fb0000706f6c6c7578206c6f67696e3a20",
- /* UDP packets (TYPE_IP */
- "450000396e0b40004011a0310a0901650a09170105da003500255489a60f01000001000000000000076f736d6f636f6d036f72670000010001",
- "450000dc9eeb00004011aeae0a0917010a090165003505da00c83fbaa60f81800001000100030004076f736d6f636f6d036f72670000010001c00c00010001000079be0004904c2b4cc00c000200010000173d00130773756e6265616d08676e756d6f6e6b73c014c00c000200010000173d000603646e73c041c00c000200010000173d000a0767616e65736861c041c058000100010000173d0004d55f2e45c058001c00010000173d0010200107800045f0460000000000690001c06a0001000100006a710004d55f1b78c039000100010000173d000453ecb2cb",
- "45000037652340004011a91b0a0901650a091701ef1b0035002376a2c3910100000100000000000006676f6f676c650264650000010001",
- "0050b6162c10000db93a3ff908004500004726a6000038114083080808080a0901650035ef1b00338a8cc3918180000100010000000006676f6f676c650264650000010001c00c000100010000012b0004d83ad503",
-};
-
-/* Compress a packet using Van Jacobson RFC1144 header compression */
-static int compress(uint8_t *data_o, uint8_t *data_i, int len,
- struct slcompress *comp)
-{
- uint8_t *comp_ptr; /* Not used */
- int compr_len;
-
- /* Create a working copy of the incoming data */
- memcpy(data_o, data_i, len);
-
- /* Run compressor */
- compr_len = slhc_compress(comp, data_i, len, data_o, &comp_ptr, 0);
- return compr_len;
-}
-
-/* Expand a packet using Van Jacobson RFC1144 header compression */
-static int expand(uint8_t *data_o, uint8_t *data_i, int len,
- struct slcompress *comp)
-{
- int data_decompressed_len;
-
- /* Create a working copy of the incoming data */
- memcpy(data_o, data_i, len);
-
- /* Handle an uncompressed packet (learn header information */
- if ((data_i[0] & SL_TYPE_UNCOMPRESSED_TCP) == SL_TYPE_UNCOMPRESSED_TCP) {
- data_o[0] &= 0x4F;
- data_decompressed_len = slhc_remember(comp, data_o, len);
- return data_decompressed_len;
- }
-
- /* Uncompress compressed packets */
- else if (data_o[0] & SL_TYPE_COMPRESSED_TCP) {
- data_decompressed_len = slhc_uncompress(comp, data_o, len);
- return data_decompressed_len;
- }
-
- /* Regular or unknown packets will not be touched */
- return len;
-}
-
-/* Calculate IP Header checksum */
-static uint16_t calc_ip_csum(uint8_t *data, int len)
-{
- int i;
- uint32_t accumulator = 0;
- uint16_t *pointer = (uint16_t *) data;
-
- for (i = len; i > 1; i -= 2) {
- accumulator += *pointer;
- pointer++;
- }
-
- if (len % 2)
- accumulator += *pointer;
-
- accumulator = (accumulator & 0xffff) + ((accumulator >> 16) & 0xffff);
- accumulator += (accumulator >> 16) & 0xffff;
- return (~accumulator);
-}
-
-/* Calculate TCP/IP checksum */
-static uint16_t calc_tcpip_csum(const void *ctx, uint8_t *packet, int len)
-{
- uint8_t *buf;
- uint16_t csum;
-
- buf = talloc_zero_size(ctx, len);
- memset(buf, 0, len);
- memcpy(buf, packet + 12, 8);
- buf[9] = packet[9];
- buf[11] = (len - 20) & 0xFF;
- buf[10] = (len - 20) >> 8 & 0xFF;
- memcpy(buf + 12, packet + 20, len - 20);
- csum = calc_ip_csum(buf, len - 20 + 12);
- talloc_free(buf);
- return csum;
-}
-
-/* Check TCP/IP packet */
-static void check_packet(const void *ctx, uint8_t *packet, int len)
-{
- /* Check IP header */
- OSMO_ASSERT(len > 20);
- OSMO_ASSERT(calc_ip_csum(packet, 20) == 0);
-
- printf("packet[9]=%02x\n", packet[9]);
-
- /* Check TCP packet */
- if (packet[9] != 0x06)
- return;
- OSMO_ASSERT(len > 40);
- OSMO_ASSERT(calc_tcpip_csum(ctx, packet, len) == 0);
-}
-
-/* Compress / Decompress packets */
-static void test_slhc(const void *ctx)
-{
- char packet_ascii[2048];
- int i;
-
- struct slcompress *comp;
- uint8_t packet[1024];
- int packet_len;
- uint8_t packet_compr[1024];
- int packet_compr_len;
- uint8_t packet_decompr[1024];
- int packet_decompr_len;
-
- printf("Allocating compression state...\n");
- comp = slhc_init(ctx, SLOTS, SLOTS);
- OSMO_ASSERT(comp);
-
- for (i = 0; i < PACKETS_LEN; i++) {
- printf("Testing with packet No. %d\n", i);
-
- /* Read input file */
- memset(packet_ascii, 0, sizeof(packet_ascii));
- memset(packet, 0, sizeof(packet));
- memset(packet_compr, 0, sizeof(packet_compr));
- memset(packet_decompr, 0, sizeof(packet_decompr));
-
- OSMO_ASSERT(strlen(packets[i]) < sizeof(packet_ascii));
- strcpy(packet_ascii, packets[i]);
-
- packet_len =
- osmo_hexparse(packet_ascii, packet, sizeof(packet));
- check_packet(ctx, packet, packet_len);
-
- /* Run compression/decompression algorithm */
- printf("Compressing...\n");
- packet_compr_len =
- compress(packet_compr, packet, packet_len, comp);
- printf("Decompressing...\n");
- packet_decompr_len =
- expand(packet_decompr, packet_compr, packet_compr_len,
- comp);
- OSMO_ASSERT(packet_decompr_len == packet_len);
- check_packet(ctx, packet_decompr, packet_decompr_len);
-
- /* Display results */
- printf("Results:\n");
- if (packet_compr_len > DISP_MAX_BYTES)
- packet_compr_len = DISP_MAX_BYTES;
- if (packet_len > DISP_MAX_BYTES)
- packet_len = DISP_MAX_BYTES;
- if (packet_decompr_len > DISP_MAX_BYTES)
- packet_decompr_len = DISP_MAX_BYTES;
- printf("Original Packet: (%i bytes) %s\n", packet_len,
- osmo_hexdump_nospc(packet, packet_len));
- printf("DecompressedPacket: (%i bytes) %s\n",
- packet_decompr_len, osmo_hexdump_nospc(packet_decompr,
- packet_decompr_len));
- printf("CompressedPacket: (%i bytes) %s\n", packet_compr_len,
- osmo_hexdump_nospc(packet_compr, packet_compr_len));
- slhc_o_status(comp);
- slhc_o_status(comp);
-
- printf("\n");
- }
-
- printf("Freeing compression state...\n");
- slhc_free(comp);
- printf("\n");
-}
-
-static struct log_info_cat gprs_categories[] = {
- [DSNDCP] = {
- .name = "DSNDCP",
- .description =
- "GPRS Sub-Network Dependent Control Protocol (SNDCP)",
- .enabled = 1,.loglevel = LOGL_DEBUG,
- },
- [DSLHC] = {
- .name = "DSLHC",
- .description =
- "Van Jacobson RFC1144 TCP/IP header compression (SLHC)",
- .enabled = 1,.loglevel = LOGL_DEBUG,
- }
-};
-
-static struct log_info info = {
- .cat = gprs_categories,
- .num_cat = ARRAY_SIZE(gprs_categories),
-};
-
-int main(int argc, char **argv)
-{
- void *ctx;
-
- osmo_init_logging(&info);
-
- ctx = talloc_named_const(NULL, 0, "slhc_ctx");
-
- test_slhc(ctx);
-
- printf("Done\n");
-
- talloc_report_full(ctx, stderr);
- OSMO_ASSERT(talloc_total_blocks(ctx) == 1);
- return 0;
-}
-
-/* stubs */
-struct osmo_prim_hdr;
-int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx)
-{
- abort();
-}
diff --git a/tests/slhc/slhc_test.ok b/tests/slhc/slhc_test.ok
deleted file mode 100644
index 71f48a179..000000000
--- a/tests/slhc/slhc_test.ok
+++ /dev/null
@@ -1,154 +0,0 @@
-Allocating compression state...
-Testing with packet No. 0
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (64 bytes) 4510004046dd40004006a9a7c0a8646ec0a864640017ad8b81980100f3ac984d801800e32a1600000101080a000647de06d1bf5efffd18fffd20fffd23fffd27
-DecompressedPacket: (64 bytes) 4510004046dd40004006a9a7c0a8646ec0a864640017ad8b81980100f3ac984d801800e32a1600000101080a000647de06d1bf5efffd18fffd20fffd23fffd27
-CompressedPacket: (64 bytes) 7510004046dd40004000a9a7c0a8646ec0a864640017ad8b81980100f3ac984d801800e32a1600000101080a000647de06d1bf5efffd18fffd20fffd23fffd27
-
-Testing with packet No. 1
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (91 bytes) 4510005b46de40004006a98bc0a8646ec0a864640017ad8b8198010cf3ac984d801800e3867500000101080a000647df06d1bf61fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0
-DecompressedPacket: (91 bytes) 4510005b46de40004006a98bc0a8646ec0a864640017ad8b8198010cf3ac984d801800e3867500000101080a000647df06d1bf61fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0
-CompressedPacket: (91 bytes) 7510005b46de40004000a98bc0a8646ec0a864640017ad8b8198010cf3ac984d801800e3867500000101080a000647df06d1bf61fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0
-
-Testing with packet No. 2
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (55 bytes) 4510003746df40004006a9aec0a8646ec0a864640017ad8b81980133f3ac989f801800e35fd700000101080a000647e106d1bf63fffd01
-DecompressedPacket: (55 bytes) 4510003746df40004006a9aec0a8646ec0a864640017ad8b81980133f3ac989f801800e35fd700000101080a000647e106d1bf63fffd01
-CompressedPacket: (55 bytes) 7510003746df40004000a9aec0a8646ec0a864640017ad8b81980133f3ac989f801800e35fd700000101080a000647e106d1bf63fffd01
-
-Testing with packet No. 3
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (55 bytes) 4510003746e040004006a9adc0a8646ec0a864640017ad8b81980136f3ac98a2801800e35fd200000101080a000647e106d1bf64fffb01
-DecompressedPacket: (55 bytes) 4510003746e040004006a9adc0a8646ec0a864640017ad8b81980136f3ac98a2801800e35fd200000101080a000647e106d1bf64fffb01
-CompressedPacket: (55 bytes) 7510003746e040004000a9adc0a8646ec0a864640017ad8b81980136f3ac98a2801800e35fd200000101080a000647e106d1bf64fffb01
-
-Testing with packet No. 4
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (100 bytes) 4510007446e140004006a96fc0a8646ec0a864640017ad8b81980139f3ac98a5801800e37b9b00000101080a000647e206d1bf640d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d
-DecompressedPacket: (100 bytes) 4510007446e140004006a96fc0a8646ec0a864640017ad8b81980139f3ac98a5801800e37b9b00000101080a000647e206d1bf640d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d
-CompressedPacket: (100 bytes) 7510007446e140004000a96fc0a8646ec0a864640017ad8b81980139f3ac98a5801800e37b9b00000101080a000647e206d1bf640d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d
-
-Testing with packet No. 5
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (66 bytes) 4510004246e240004006a9a0c0a8646ec0a864640017ad8b81980179f3ac98a5801800e3dab000000101080a000647ec06d1bf6f706f6c6c7578206c6f67696e3a20
-DecompressedPacket: (66 bytes) 4510004246e240004006a9a0c0a8646ec0a864640017ad8b81980179f3ac98a5801800e3dab000000101080a000647ec06d1bf6f706f6c6c7578206c6f67696e3a20
-CompressedPacket: (66 bytes) 7510004246e240004000a9a0c0a8646ec0a864640017ad8b81980179f3ac98a5801800e3dab000000101080a000647ec06d1bf6f706f6c6c7578206c6f67696e3a20
-
-Testing with packet No. 6
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (52 bytes) 4510003446dd40004006a9b3c0a8646ec0a864640017ad8b81980100f3ac984d501800e371410000fffd18fffd20fffd23fffd27
-DecompressedPacket: (52 bytes) 4510003446dd40004006a9b3c0a8646ec0a864640017ad8b81980100f3ac984d501800e371410000fffd18fffd20fffd23fffd27
-CompressedPacket: (52 bytes) 7510003446dd40004000a9b3c0a8646ec0a864640017ad8b81980100f3ac984d501800e371410000fffd18fffd20fffd23fffd27
-
-Testing with packet No. 7
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (79 bytes) 4510004f46de40004006a997c0a8646ec0a864640017ad8b8198010cf3ac984d501800e3cda40000fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0
-DecompressedPacket: (79 bytes) 4510004f46de40004006a997c0a8646ec0a864640017ad8b8198010cf3ac984d501800e3cda40000fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0
-CompressedPacket: (43 bytes) df00cda4fffb03fffd1ffffd21fffe22fffb05fffa2001fff0fffa2301fff0fffa2701fff0fffa1801fff0
-
-Testing with packet No. 8
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (43 bytes) 4510002b46df40004006a9bac0a8646ec0a864640017ad8b81980133f3ac989f501800e3a70a0000fffd01
-DecompressedPacket: (43 bytes) 4510002b46df40004006a9bac0a8646ec0a864640017ad8b81980133f3ac989f501800e3a70a0000fffd01
-CompressedPacket: (9 bytes) dc00a70a5227fffd01
-
-Testing with packet No. 9
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (43 bytes) 4510002b46e040004006a9b9c0a8646ec0a864640017ad8b81980136f3ac98a2501800e3a7060000fffb01
-DecompressedPacket: (43 bytes) 4510002b46e040004006a9b9c0a8646ec0a864640017ad8b81980136f3ac98a2501800e3a7060000fffb01
-CompressedPacket: (7 bytes) db00a706fffb01
-
-Testing with packet No. 10
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (100 bytes) 4510006846e140004006a97bc0a8646ec0a864640017ad8b81980139f3ac98a5501800e3c2d000000d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d
-DecompressedPacket: (100 bytes) 4510006846e140004006a97bc0a8646ec0a864640017ad8b81980139f3ac98a5501800e3c2d000000d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d
-CompressedPacket: (68 bytes) db00c2d00d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a57656c6c636f6d6520746f20706f6c6c75780d0a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0d0a0d0a
-
-Testing with packet No. 11
-packet[9]=06
-Compressing...
-Decompressing...
-packet[9]=06
-Results:
-Original Packet: (54 bytes) 4510003646e240004006a9acc0a8646ec0a864640017ad8b81980179f3ac98a5501800e321fb0000706f6c6c7578206c6f67696e3a20
-DecompressedPacket: (54 bytes) 4510003646e240004006a9acc0a8646ec0a864640017ad8b81980179f3ac98a5501800e321fb0000706f6c6c7578206c6f67696e3a20
-CompressedPacket: (18 bytes) df0021fb706f6c6c7578206c6f67696e3a20
-
-Testing with packet No. 12
-packet[9]=11
-Compressing...
-Decompressing...
-packet[9]=11
-Results:
-Original Packet: (57 bytes) 450000396e0b40004011a0310a0901650a09170105da003500255489a60f01000001000000000000076f736d6f636f6d036f72670000010001
-DecompressedPacket: (57 bytes) 450000396e0b40004011a0310a0901650a09170105da003500255489a60f01000001000000000000076f736d6f636f6d036f72670000010001
-CompressedPacket: (57 bytes) 450000396e0b40004011a0310a0901650a09170105da003500255489a60f01000001000000000000076f736d6f636f6d036f72670000010001
-
-Testing with packet No. 13
-packet[9]=11
-Compressing...
-Decompressing...
-packet[9]=11
-Results:
-Original Packet: (100 bytes) 450000dc9eeb00004011aeae0a0917010a090165003505da00c83fbaa60f81800001000100030004076f736d6f636f6d036f72670000010001c00c00010001000079be0004904c2b4cc00c000200010000173d00130773756e6265616d08676e756d6f6e
-DecompressedPacket: (100 bytes) 450000dc9eeb00004011aeae0a0917010a090165003505da00c83fbaa60f81800001000100030004076f736d6f636f6d036f72670000010001c00c00010001000079be0004904c2b4cc00c000200010000173d00130773756e6265616d08676e756d6f6e
-CompressedPacket: (100 bytes) 450000dc9eeb00004011aeae0a0917010a090165003505da00c83fbaa60f81800001000100030004076f736d6f636f6d036f72670000010001c00c00010001000079be0004904c2b4cc00c000200010000173d00130773756e6265616d08676e756d6f6e
-
-Testing with packet No. 14
-packet[9]=11
-Compressing...
-Decompressing...
-packet[9]=11
-Results:
-Original Packet: (55 bytes) 45000037652340004011a91b0a0901650a091701ef1b0035002376a2c3910100000100000000000006676f6f676c650264650000010001
-DecompressedPacket: (55 bytes) 45000037652340004011a91b0a0901650a091701ef1b0035002376a2c3910100000100000000000006676f6f676c650264650000010001
-CompressedPacket: (55 bytes) 45000037652340004011a91b0a0901650a091701ef1b0035002376a2c3910100000100000000000006676f6f676c650264650000010001
-
-Freeing compression state...
-
-Done
diff --git a/tests/smpp/Makefile.am b/tests/smpp/Makefile.am
deleted file mode 100644
index 508270753..000000000
--- a/tests/smpp/Makefile.am
+++ /dev/null
@@ -1,40 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/src/libmsc \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOSCCP_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(LIBSMPP34_CFLAGS) \
- $(NULL)
-
-AM_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- smpp_test.ok \
- smpp_test.err \
- $(NULL)
-
-noinst_PROGRAMS = \
- smpp_test \
- $(NULL)
-
-smpp_test_SOURCES = \
- smpp_test.c \
- $(top_builddir)/src/libmsc/smpp_utils.c \
- $(NULL)
-
-smpp_test_LDADD = \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(NULL)
diff --git a/tests/smpp/smpp_test.c b/tests/smpp/smpp_test.c
deleted file mode 100644
index 62fa9d2e9..000000000
--- a/tests/smpp/smpp_test.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * (C) 2013 by Holger Hans Peter Freyther
- * All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <openbsc/debug.h>
-
-#include <osmocom/core/application.h>
-#include <osmocom/core/backtrace.h>
-
-#include "smpp_smsc.h"
-
-struct coding_test {
- uint8_t dcs;
- uint8_t coding;
- int mode;
- int res;
-};
-
-static struct coding_test codecs[] = {
- { .dcs = 0xf6 , .coding = 0x02, .mode = MODE_8BIT, .res = 0 },
- { .dcs = 0xf2 , .coding = 0x01, .mode = MODE_7BIT, .res = 0 },
- { .dcs = 0x02 , .coding = 0x01, .mode = MODE_7BIT, .res = 0 },
- { .dcs = 0x06 , .coding = 0x02, .mode = MODE_8BIT, .res = 0 },
- { .dcs = 0x0A , .coding = 0x08, .mode = MODE_8BIT, .res = 0 },
- { .dcs = 0x0E , .coding = 0xFF, .mode = 0xFF, .res = -1 },
- { .dcs = 0xE0 , .coding = 0xFF, .mode = 0xFF, .res = -1 },
-};
-
-static void test_coding_scheme(void)
-{
- int i;
- printf("Testing coding scheme support\n");
-
- for (i = 0; i < ARRAY_SIZE(codecs); ++i) {
- uint8_t coding;
- int mode, res;
-
- res = smpp_determine_scheme(codecs[i].dcs, &coding, &mode);
- OSMO_ASSERT(res == codecs[i].res);
- if (res != -1) {
- OSMO_ASSERT(mode == codecs[i].mode);
- OSMO_ASSERT(coding == codecs[i].coding);
- }
- }
-}
-
-int main(int argc, char **argv)
-{
- osmo_init_logging(&log_info);
- log_set_use_color(osmo_stderr_target, 0);
- log_set_print_filename(osmo_stderr_target, 0);
-
- test_coding_scheme();
- return EXIT_SUCCESS;
-}
diff --git a/tests/smpp/smpp_test.err b/tests/smpp/smpp_test.err
deleted file mode 100644
index ec966ba47..000000000
--- a/tests/smpp/smpp_test.err
+++ /dev/null
@@ -1,2 +0,0 @@
-SMPP MO Unknown Data Coding 0x0e
-SMPP MO Unknown Data Coding 0xe0
diff --git a/tests/smpp/smpp_test.ok b/tests/smpp/smpp_test.ok
deleted file mode 100644
index fd44804d1..000000000
--- a/tests/smpp/smpp_test.ok
+++ /dev/null
@@ -1 +0,0 @@
-Testing coding scheme support
diff --git a/tests/smpp_test_runner.py b/tests/smpp_test_runner.py
deleted file mode 100644
index 7a3a342ec..000000000
--- a/tests/smpp_test_runner.py
+++ /dev/null
@@ -1,137 +0,0 @@
-#!/usr/bin/env python
-
-# (C) 2014 by Holger Hans Peter Freyther
-# based on vty_test_runner.py:
-# (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com>
-# (C) 2013 by Holger Hans Peter Freyther
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import os
-import sys
-import time
-import unittest
-import socket
-
-import osmopy.obscvty as obscvty
-import osmopy.osmoutil as osmoutil
-
-confpath = os.path.join(sys.path[0], '..')
-
-class TestVTYBase(unittest.TestCase):
-
- def vty_command(self):
- raise Exception("Needs to be implemented by a subclass")
-
- def vty_app(self):
- raise Exception("Needs to be implemented by a subclass")
-
- def setUp(self):
- osmo_vty_cmd = self.vty_command()[:]
- config_index = osmo_vty_cmd.index('-c')
- if config_index:
- cfi = config_index + 1
- osmo_vty_cmd[cfi] = os.path.join(confpath, osmo_vty_cmd[cfi])
-
- try:
- self.proc = osmoutil.popen_devnull(osmo_vty_cmd)
- except OSError:
- print >> sys.stderr, "Current directory: %s" % os.getcwd()
- print >> sys.stderr, "Consider setting -b"
-
- appstring = self.vty_app()[2]
- appport = self.vty_app()[0]
- self.vty = obscvty.VTYInteract(appstring, "127.0.0.1", appport)
-
- def tearDown(self):
- if self.vty:
- self.vty._close_socket()
- self.vty = None
- osmoutil.end_proc(self.proc)
-
-
-class TestSMPPMSC(TestVTYBase):
-
- def vty_command(self):
- return ["./src/osmo-msc/osmo-msc", "-c",
- "doc/examples/osmo-msc/osmo-msc.cfg"]
-
- def vty_app(self):
- return (4254, "./src/osmo-msc/osmo-msc", "OsmoMSC", "msc")
-
- def testSMPPCrashes(self):
- # Enable the configuration
- self.vty.enable()
- self.assertTrue(self.vty.verify("configure terminal", ['']))
- self.assertEquals(self.vty.node(), 'config')
-
- self.assertTrue(self.vty.verify('smpp', ['']))
- self.assertEquals(self.vty.node(), 'config-smpp')
- self.assertTrue(self.vty.verify('system-id test', ['']))
- self.assertTrue(self.vty.verify('local-tcp-port 2775', ['']))
- self.assertTrue(self.vty.verify('esme test', ['']))
- self.assertEquals(self.vty.node(), 'config-smpp-esme')
- self.assertTrue(self.vty.verify('default-route', ['']))
- self.assertTrue(self.vty.verify('end', ['']))
-
- # MSC should listen to 2775 now!
- sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sck.setblocking(1)
- sck.connect(('0.0.0.0', 2775))
- sck.sendall('\x00\x00\x00\x02\x00')
- sck.close()
-
- # Check if the VTY is still there
- self.vty.verify('disable',[''])
-
- # Now for the second packet
- sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- sck.setblocking(1)
- sck.connect(('0.0.0.0', 2775))
- sck.sendall('\x00\x01\x00\x01\x01')
- sck.close()
-
- self.vty.verify('enable',[''])
-
-if __name__ == '__main__':
- import argparse
- import sys
-
- workdir = '.'
-
- parser = argparse.ArgumentParser()
- parser.add_argument("-v", "--verbose", dest="verbose",
- action="store_true", help="verbose mode")
- parser.add_argument("-p", "--pythonconfpath", dest="p",
- help="searchpath for config")
- parser.add_argument("-w", "--workdir", dest="w",
- help="Working directory")
- args = parser.parse_args()
-
- verbose_level = 1
- if args.verbose:
- verbose_level = 2
-
- if args.w:
- workdir = args.w
-
- if args.p:
- confpath = args.p
-
- print "confpath %s, workdir %s" % (confpath, workdir)
- os.chdir(workdir)
- print "Running tests for specific SMPP"
- suite = unittest.TestSuite()
- suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestSMPPMSC))
- res = unittest.TextTestRunner(verbosity=verbose_level).run(suite)
- sys.exit(len(res.errors) + len(res.failures))
diff --git a/tests/sms_queue/Makefile.am b/tests/sms_queue/Makefile.am
deleted file mode 100644
index 3cc9fdcf0..000000000
--- a/tests/sms_queue/Makefile.am
+++ /dev/null
@@ -1,49 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOSIGTRAN_CFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- sms_queue_test.ok \
- sms_queue_test.err \
- $(NULL)
-
-noinst_PROGRAMS = \
- sms_queue_test \
- $(NULL)
-
-sms_queue_test_SOURCES = \
- sms_queue_test.c \
- $(NULL)
-
-sms_queue_test_LDADD = \
- $(top_builddir)/src/libmsc/libmsc.a \
- $(top_builddir)/src/libvlr/libvlr.a \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libmgcp/libmgcp.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(top_builddir)/src/libcommon-cs/libcommon-cs.a \
- $(top_builddir)/tests/libiudummy/libiudummy.a \
- $(LIBSMPP34_LIBS) \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBCRYPTO_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- $(LIBOSMOSIGTRAN_LIBS) \
- -ldbi \
- -lrt \
- $(NULL)
-
-sms_queue_test_LDFLAGS = \
- -Wl,--wrap=db_sms_get_next_unsent_rr_msisdn \
- $(NULL)
diff --git a/tests/sms_queue/sms_queue_test.c b/tests/sms_queue/sms_queue_test.c
deleted file mode 100644
index af25b0645..000000000
--- a/tests/sms_queue/sms_queue_test.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* Test Osmocom SMS queue */
-
-/*
- * (C) 2017 by sysmocom s.f.m.c. GmbH
- * All Rights Reserved
- *
- * Author: Neels Hofmeyr <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 <osmocom/core/application.h>
-
-#include <openbsc/debug.h>
-#include <openbsc/vlr.h>
-
-static void *talloc_ctx = NULL;
-
-struct gsm_sms *smsq_take_next_sms(struct gsm_network *net,
- char *last_msisdn,
- size_t last_msisdn_buflen);
-
-static void _test_take_next_sms_print(int i,
- struct gsm_sms *sms,
- const char *last_msisdn)
-{
- printf("#%d: ", i);
- if (sms)
- printf("sending SMS to %s", sms->text);
- else
- printf("no SMS to send");
- printf(" (last_msisdn='%s')\n", last_msisdn? last_msisdn : "NULL");
-}
-
-static struct gsm_sms fake_sms = { 0 };
-
-struct {
- const char *msisdn;
- int nr_of_sms;
- int failed_attempts;
- bool vsub_attached;
-} fake_sms_db[] = {
- {
- .msisdn = "1111",
- .nr_of_sms = 0,
- .vsub_attached = true,
- },
- {
- .msisdn = "2222",
- .nr_of_sms = 2,
- .failed_attempts = 2,
- .vsub_attached = true,
- },
- {
- .msisdn = "3333",
- .nr_of_sms = 2,
- .failed_attempts = 3,
- .vsub_attached = true,
- },
- {
- .msisdn = "4444",
- .nr_of_sms = 0,
- .vsub_attached = true,
- },
- {
- .msisdn = "5555",
- .nr_of_sms = 2,
- .failed_attempts = 5,
- .vsub_attached = false,
- },
-};
-
-/* override, requires '-Wl,--wrap=db_sms_get_next_unsent_rr_msisdn' */
-struct gsm_sms *__real_db_sms_get_next_unsent_rr_msisdn(struct gsm_network *net,
- const char *last_msisdn,
- unsigned int max_failed);
-struct gsm_sms *__wrap_db_sms_get_next_unsent_rr_msisdn(struct gsm_network *net,
- const char *last_msisdn,
- unsigned int max_failed)
-{
- static struct vlr_subscr arbitrary_vsub = { .lu_complete = true };
- int i;
- printf(" hitting database: looking for MSISDN > '%s', failed_attempts <= %d\n",
- last_msisdn, max_failed);
-
- for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) {
- if (!fake_sms_db[i].nr_of_sms)
- continue;
- if (strcmp(fake_sms_db[i].msisdn, last_msisdn) <= 0)
- continue;
- if (fake_sms_db[i].failed_attempts > max_failed)
- continue;
- osmo_strlcpy(fake_sms.dst.addr, fake_sms_db[i].msisdn,
- sizeof(fake_sms.dst.addr));
- fake_sms.receiver = fake_sms_db[i].vsub_attached? &arbitrary_vsub : NULL;
- osmo_strlcpy(fake_sms.text, fake_sms_db[i].msisdn, sizeof(fake_sms.text));
- if (fake_sms_db[i].vsub_attached)
- fake_sms_db[i].nr_of_sms --;
- return &fake_sms;
- }
- return NULL;
-}
-
-void show_fake_sms_db()
-{
- int i;
- for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) {
- printf(" %s%s has %u SMS pending, %u failed attempts\n",
- fake_sms_db[i].msisdn,
- fake_sms_db[i].vsub_attached ? "" : " (NOT attached)",
- fake_sms_db[i].nr_of_sms,
- fake_sms_db[i].failed_attempts);
- }
- printf("-->\n");
-}
-
-static void test_next_sms()
-{
- int i;
- char last_msisdn[GSM_EXTENSION_LENGTH+1] = "";
-
- printf("Testing smsq_take_next_sms()\n");
-
- printf("\n- vsub 2, 3 and 5 each have 2 SMS pending, but 5 is not attached\n");
- last_msisdn[0] = '\0';
- show_fake_sms_db();
- for (i = 0; i < 7; i++) {
- struct gsm_sms *sms = smsq_take_next_sms(NULL, last_msisdn, sizeof(last_msisdn));
- _test_take_next_sms_print(i, sms, last_msisdn);
- OSMO_ASSERT(i >= 4 || sms);
- }
-
- printf("\n- SMS are pending at various nr failed attempts (cutoff at >= 10)\n");
- last_msisdn[0] = '\0';
- for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) {
- fake_sms_db[i].vsub_attached = true;
- fake_sms_db[i].nr_of_sms = 1 + i;
- fake_sms_db[i].failed_attempts = i*5;
-
- }
- show_fake_sms_db();
- for (i = 0; i < 7; i++) {
- struct gsm_sms *sms = smsq_take_next_sms(NULL, last_msisdn, sizeof(last_msisdn));
- _test_take_next_sms_print(i, sms, last_msisdn);
- OSMO_ASSERT(i >= 2 || sms);
- }
-
- printf("\n- iterate the SMS DB at most once\n");
- osmo_strlcpy(last_msisdn, "2345", sizeof(last_msisdn));
- for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) {
- fake_sms_db[i].vsub_attached = false;
- fake_sms_db[i].nr_of_sms = 1;
- fake_sms_db[i].failed_attempts = 0;
- }
- show_fake_sms_db();
- for (i = 0; i < 3; i++) {
- struct gsm_sms *sms = smsq_take_next_sms(NULL, last_msisdn, sizeof(last_msisdn));
- _test_take_next_sms_print(i, sms, last_msisdn);
- OSMO_ASSERT(!sms);
- }
-
- printf("\n- there are no SMS in the DB\n");
- last_msisdn[0] = '\0';
- for (i = 0; i < ARRAY_SIZE(fake_sms_db); i++) {
- fake_sms_db[i].vsub_attached = true;
- fake_sms_db[i].nr_of_sms = 0;
- fake_sms_db[i].failed_attempts = 0;
- }
- show_fake_sms_db();
- for (i = 0; i < 3; i++) {
- struct gsm_sms *sms = smsq_take_next_sms(NULL, last_msisdn, sizeof(last_msisdn));
- _test_take_next_sms_print(i, sms, last_msisdn);
- OSMO_ASSERT(!sms);
- }
-}
-
-
-static struct log_info_cat sms_queue_test_categories[] = {
-};
-
-static struct log_info info = {
- .cat = sms_queue_test_categories,
- .num_cat = ARRAY_SIZE(sms_queue_test_categories),
-};
-
-int main(int argc, char **argv)
-{
- talloc_ctx = talloc_named_const(NULL, 1, "sms_queue_test");
- msgb_talloc_ctx_init(talloc_ctx, 0);
- osmo_init_logging(&info);
-
- OSMO_ASSERT(osmo_stderr_target);
- log_set_use_color(osmo_stderr_target, 0);
- log_set_print_timestamp(osmo_stderr_target, 0);
- log_set_print_filename(osmo_stderr_target, 0);
- log_set_print_category(osmo_stderr_target, 1);
- log_parse_category_mask(osmo_stderr_target, "DLOAP,1");
-
- test_next_sms();
- printf("Done\n");
-
- return 0;
-}
diff --git a/tests/sms_queue/sms_queue_test.err b/tests/sms_queue/sms_queue_test.err
deleted file mode 100644
index e69de29bb..000000000
--- a/tests/sms_queue/sms_queue_test.err
+++ /dev/null
diff --git a/tests/sms_queue/sms_queue_test.ok b/tests/sms_queue/sms_queue_test.ok
deleted file mode 100644
index 146400d21..000000000
--- a/tests/sms_queue/sms_queue_test.ok
+++ /dev/null
@@ -1,98 +0,0 @@
-Testing smsq_take_next_sms()
-
-- vsub 2, 3 and 5 each have 2 SMS pending, but 5 is not attached
- 1111 has 0 SMS pending, 0 failed attempts
- 2222 has 2 SMS pending, 2 failed attempts
- 3333 has 2 SMS pending, 3 failed attempts
- 4444 has 0 SMS pending, 0 failed attempts
- 5555 (NOT attached) has 2 SMS pending, 5 failed attempts
--->
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#0: sending SMS to 2222 (last_msisdn='2222')
- hitting database: looking for MSISDN > '2222', failed_attempts <= 9
-#1: sending SMS to 3333 (last_msisdn='3333')
- hitting database: looking for MSISDN > '3333', failed_attempts <= 9
- hitting database: looking for MSISDN > '5555', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#2: sending SMS to 2222 (last_msisdn='2222')
- hitting database: looking for MSISDN > '2222', failed_attempts <= 9
-#3: sending SMS to 3333 (last_msisdn='3333')
- hitting database: looking for MSISDN > '3333', failed_attempts <= 9
- hitting database: looking for MSISDN > '5555', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#4: no SMS to send (last_msisdn='5555')
- hitting database: looking for MSISDN > '5555', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#5: no SMS to send (last_msisdn='5555')
- hitting database: looking for MSISDN > '5555', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#6: no SMS to send (last_msisdn='5555')
-
-- SMS are pending at various nr failed attempts (cutoff at >= 10)
- 1111 has 1 SMS pending, 0 failed attempts
- 2222 has 2 SMS pending, 5 failed attempts
- 3333 has 3 SMS pending, 10 failed attempts
- 4444 has 4 SMS pending, 15 failed attempts
- 5555 has 5 SMS pending, 20 failed attempts
--->
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#0: sending SMS to 1111 (last_msisdn='1111')
- hitting database: looking for MSISDN > '1111', failed_attempts <= 9
-#1: sending SMS to 2222 (last_msisdn='2222')
- hitting database: looking for MSISDN > '2222', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#2: sending SMS to 2222 (last_msisdn='2222')
- hitting database: looking for MSISDN > '2222', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#3: no SMS to send (last_msisdn='')
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#4: no SMS to send (last_msisdn='')
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#5: no SMS to send (last_msisdn='')
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#6: no SMS to send (last_msisdn='')
-
-- iterate the SMS DB at most once
- 1111 (NOT attached) has 1 SMS pending, 0 failed attempts
- 2222 (NOT attached) has 1 SMS pending, 0 failed attempts
- 3333 (NOT attached) has 1 SMS pending, 0 failed attempts
- 4444 (NOT attached) has 1 SMS pending, 0 failed attempts
- 5555 (NOT attached) has 1 SMS pending, 0 failed attempts
--->
- hitting database: looking for MSISDN > '2345', failed_attempts <= 9
- hitting database: looking for MSISDN > '3333', failed_attempts <= 9
- hitting database: looking for MSISDN > '4444', failed_attempts <= 9
- hitting database: looking for MSISDN > '5555', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
- hitting database: looking for MSISDN > '1111', failed_attempts <= 9
- hitting database: looking for MSISDN > '2222', failed_attempts <= 9
-#0: no SMS to send (last_msisdn='3333')
- hitting database: looking for MSISDN > '3333', failed_attempts <= 9
- hitting database: looking for MSISDN > '4444', failed_attempts <= 9
- hitting database: looking for MSISDN > '5555', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
- hitting database: looking for MSISDN > '1111', failed_attempts <= 9
- hitting database: looking for MSISDN > '2222', failed_attempts <= 9
-#1: no SMS to send (last_msisdn='3333')
- hitting database: looking for MSISDN > '3333', failed_attempts <= 9
- hitting database: looking for MSISDN > '4444', failed_attempts <= 9
- hitting database: looking for MSISDN > '5555', failed_attempts <= 9
- hitting database: looking for MSISDN > '', failed_attempts <= 9
- hitting database: looking for MSISDN > '1111', failed_attempts <= 9
- hitting database: looking for MSISDN > '2222', failed_attempts <= 9
-#2: no SMS to send (last_msisdn='3333')
-
-- there are no SMS in the DB
- 1111 has 0 SMS pending, 0 failed attempts
- 2222 has 0 SMS pending, 0 failed attempts
- 3333 has 0 SMS pending, 0 failed attempts
- 4444 has 0 SMS pending, 0 failed attempts
- 5555 has 0 SMS pending, 0 failed attempts
--->
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#0: no SMS to send (last_msisdn='')
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#1: no SMS to send (last_msisdn='')
- hitting database: looking for MSISDN > '', failed_attempts <= 9
-#2: no SMS to send (last_msisdn='')
-Done
diff --git a/tests/subscr/Makefile.am b/tests/subscr/Makefile.am
deleted file mode 100644
index 5b770bcb2..000000000
--- a/tests/subscr/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(LIBSMPP34_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(NULL)
-
-AM_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- bsc_subscr_test.ok \
- bsc_subscr_test.err \
- $(NULL)
-
-noinst_PROGRAMS = \
- bsc_subscr_test \
- $(NULL)
-
-bsc_subscr_test_SOURCES = \
- bsc_subscr_test.c \
- $(NULL)
-
-bsc_subscr_test_LDADD = \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libcommon-cs/libcommon-cs.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBSMPP34_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(NULL)
diff --git a/tests/subscr/bsc_subscr_test.c b/tests/subscr/bsc_subscr_test.c
deleted file mode 100644
index 60d687d58..000000000
--- a/tests/subscr/bsc_subscr_test.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* (C) 2008 by Jan Luebbe <jluebbe@debian.org>
- * (C) 2009 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/bsc_subscriber.h>
-
-#include <osmocom/core/application.h>
-#include <osmocom/core/utils.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <inttypes.h>
-
-struct llist_head *bsc_subscribers;
-
-#define VERBOSE_ASSERT(val, expect_op, fmt) \
- do { \
- printf(#val " == " fmt "\n", (val)); \
- OSMO_ASSERT((val) expect_op); \
- } while (0);
-
-static void assert_bsc_subscr(const struct bsc_subscr *bsub, const char *imsi)
-{
- struct bsc_subscr *sfound;
- OSMO_ASSERT(bsub);
- OSMO_ASSERT(strcmp(bsub->imsi, imsi) == 0);
-
- sfound = bsc_subscr_find_by_imsi(bsc_subscribers, imsi);
- OSMO_ASSERT(sfound == bsub);
-
- bsc_subscr_put(sfound);
-}
-
-static void test_bsc_subscr(void)
-{
- struct bsc_subscr *s1, *s2, *s3;
- const char *imsi1 = "1234567890";
- const char *imsi2 = "9876543210";
- const char *imsi3 = "5656565656";
-
- printf("Test BSC subscriber allocation and deletion\n");
-
- /* Check for emptiness */
- VERBOSE_ASSERT(llist_count(bsc_subscribers), == 0, "%d");
- OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi1) == NULL);
- OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi2) == NULL);
- OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi3) == NULL);
-
- /* Allocate entry 1 */
- s1 = bsc_subscr_find_or_create_by_imsi(bsc_subscribers, imsi1);
- VERBOSE_ASSERT(llist_count(bsc_subscribers), == 1, "%d");
- assert_bsc_subscr(s1, imsi1);
- VERBOSE_ASSERT(llist_count(bsc_subscribers), == 1, "%d");
- OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi2) == NULL);
-
- /* Allocate entry 2 */
- s2 = bsc_subscr_find_or_create_by_imsi(bsc_subscribers, imsi2);
- VERBOSE_ASSERT(llist_count(bsc_subscribers), == 2, "%d");
-
- /* Allocate entry 3 */
- s3 = bsc_subscr_find_or_create_by_imsi(bsc_subscribers, imsi3);
- VERBOSE_ASSERT(llist_count(bsc_subscribers), == 3, "%d");
-
- /* Check entries */
- assert_bsc_subscr(s1, imsi1);
- assert_bsc_subscr(s2, imsi2);
- assert_bsc_subscr(s3, imsi3);
-
- /* Free entry 1 */
- bsc_subscr_put(s1);
- s1 = NULL;
- VERBOSE_ASSERT(llist_count(bsc_subscribers), == 2, "%d");
- OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi1) == NULL);
-
- assert_bsc_subscr(s2, imsi2);
- assert_bsc_subscr(s3, imsi3);
-
- /* Free entry 2 */
- bsc_subscr_put(s2);
- s2 = NULL;
- VERBOSE_ASSERT(llist_count(bsc_subscribers), == 1, "%d");
- OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi1) == NULL);
- OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi2) == NULL);
- assert_bsc_subscr(s3, imsi3);
-
- /* Free entry 3 */
- bsc_subscr_put(s3);
- s3 = NULL;
- VERBOSE_ASSERT(llist_count(bsc_subscribers), == 0, "%d");
- OSMO_ASSERT(bsc_subscr_find_by_imsi(bsc_subscribers, imsi3) == NULL);
-
- OSMO_ASSERT(llist_empty(bsc_subscribers));
-}
-
-int main()
-{
- printf("Testing BSC subscriber core code.\n");
- osmo_init_logging(&log_info);
- log_set_print_filename(osmo_stderr_target, 0);
- log_set_print_timestamp(osmo_stderr_target, 0);
- log_set_use_color(osmo_stderr_target, 0);
- log_set_print_category(osmo_stderr_target, 1);
- log_set_category_filter(osmo_stderr_target, DREF, 1, LOGL_DEBUG);
-
- bsc_subscribers = talloc_zero(NULL, struct llist_head);
- INIT_LLIST_HEAD(bsc_subscribers);
-
- test_bsc_subscr();
-
- printf("Done\n");
- return 0;
-}
diff --git a/tests/subscr/bsc_subscr_test.err b/tests/subscr/bsc_subscr_test.err
deleted file mode 100644
index a66317a36..000000000
--- a/tests/subscr/bsc_subscr_test.err
+++ /dev/null
@@ -1,17 +0,0 @@
-DREF BSC subscr IMSI:1234567890 usage increases to: 2
-DREF BSC subscr IMSI:1234567890 usage decreases to: 1
-DREF BSC subscr IMSI:1234567890 usage increases to: 2
-DREF BSC subscr IMSI:1234567890 usage decreases to: 1
-DREF BSC subscr IMSI:9876543210 usage increases to: 2
-DREF BSC subscr IMSI:9876543210 usage decreases to: 1
-DREF BSC subscr IMSI:5656565656 usage increases to: 2
-DREF BSC subscr IMSI:5656565656 usage decreases to: 1
-DREF BSC subscr IMSI:1234567890 usage decreases to: 0
-DREF BSC subscr IMSI:9876543210 usage increases to: 2
-DREF BSC subscr IMSI:9876543210 usage decreases to: 1
-DREF BSC subscr IMSI:5656565656 usage increases to: 2
-DREF BSC subscr IMSI:5656565656 usage decreases to: 1
-DREF BSC subscr IMSI:9876543210 usage decreases to: 0
-DREF BSC subscr IMSI:5656565656 usage increases to: 2
-DREF BSC subscr IMSI:5656565656 usage decreases to: 1
-DREF BSC subscr IMSI:5656565656 usage decreases to: 0
diff --git a/tests/subscr/bsc_subscr_test.ok b/tests/subscr/bsc_subscr_test.ok
deleted file mode 100644
index 0f6a8be01..000000000
--- a/tests/subscr/bsc_subscr_test.ok
+++ /dev/null
@@ -1,11 +0,0 @@
-Testing BSC subscriber core code.
-Test BSC subscriber allocation and deletion
-llist_count(bsc_subscribers) == 0
-llist_count(bsc_subscribers) == 1
-llist_count(bsc_subscribers) == 1
-llist_count(bsc_subscribers) == 2
-llist_count(bsc_subscribers) == 3
-llist_count(bsc_subscribers) == 2
-llist_count(bsc_subscribers) == 1
-llist_count(bsc_subscribers) == 0
-Done
diff --git a/tests/trau/Makefile.am b/tests/trau/Makefile.am
deleted file mode 100644
index 1d014ba3c..000000000
--- a/tests/trau/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-AM_CPPFLAGS = \
- $(all_includes) \
- -I$(top_srcdir)/include \
- $(NULL)
-
-AM_CFLAGS = \
- -Wall \
- -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(LIBSMPP34_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(NULL)
-
-AM_LDFLAGS = \
- $(COVERAGE_LDFLAGS) \
- $(NULL)
-
-EXTRA_DIST = \
- trau_test.ok \
- $(NULL)
-
-noinst_PROGRAMS = \
- trau_test \
- $(NULL)
-
-trau_test_SOURCES = \
- trau_test.c \
- $(NULL)
-
-trau_test_LDADD = \
- $(top_builddir)/src/libbsc/libbsc.a \
- $(top_builddir)/src/libcommon-cs/libcommon-cs.a \
- $(top_builddir)/src/libtrau/libtrau.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBSMPP34_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBRARY_DL) \
- -ldbi \
- $(NULL)
-
diff --git a/tests/trau/trau_test.c b/tests/trau/trau_test.c
deleted file mode 100644
index c74e6dbb3..000000000
--- a/tests/trau/trau_test.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* (C) 2013 by Andreas Eversberg <jolly@eversberg.eu>
- * 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 <osmocom/abis/trau_frame.h>
-#include <openbsc/trau_mux.h>
-#include <osmocom/core/msgb.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-void test_trau_fr_efr(unsigned char *data)
-{
- struct decoded_trau_frame tf;
- struct msgb *msg;
- struct gsm_data_frame *frame;
-
- printf("Testing TRAU FR transcoding.\n");
- data[0] = 0xd0;
- trau_encode_fr(&tf, data);
- tf.c_bits[11] = 0; /* clear BFI */
- msg = trau_decode_fr(1, &tf);
- OSMO_ASSERT(msg != NULL);
- frame = (struct gsm_data_frame *)msg->data;
- OSMO_ASSERT(frame->msg_type == GSM_TCHF_FRAME);
- OSMO_ASSERT(!memcmp(frame->data, data, 33));
- msgb_free(msg);
-
- printf("Testing TRAU EFR transcoding.\n");
- data[0] = 0xc0;
- trau_encode_efr(&tf, data);
- OSMO_ASSERT(tf.d_bits[0] == 1); /* spare bit must be 1 */
- tf.c_bits[11] = 0; /* clear BFI */
- msg = trau_decode_efr(1, &tf);
- OSMO_ASSERT(msg != NULL);
- frame = (struct gsm_data_frame *)msg->data;
- OSMO_ASSERT(frame->msg_type == GSM_TCHF_FRAME_EFR);
- OSMO_ASSERT(!memcmp(frame->data, data, 31));
-
- printf("Testing TRAU EFR decoding with CRC error.\n");
- tf.d_bits[0] = 0; /* spare bit must be included */
- msg = trau_decode_efr(1, &tf);
- OSMO_ASSERT(msg != NULL);
- frame = (struct gsm_data_frame *)msg->data;
- OSMO_ASSERT(frame->msg_type == GSM_BAD_FRAME);
- msgb_free(msg);
-}
-
-int main()
-{
- unsigned char data[33];
- int i;
-
- msgb_talloc_ctx_init(NULL, 0);
-
- memset(data, 0x00, sizeof(data));
- test_trau_fr_efr(data);
- memset(data, 0xff, sizeof(data));
- test_trau_fr_efr(data);
- srandom(42);
- for (i = 0; i < sizeof(data); i++)
- data[i] = random();
- test_trau_fr_efr(data);
- printf("Done\n");
- return 0;
-}
-
-/* stubs */
-void vty_out() {}
diff --git a/tests/trau/trau_test.ok b/tests/trau/trau_test.ok
deleted file mode 100644
index ef7123073..000000000
--- a/tests/trau/trau_test.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-Testing TRAU FR transcoding.
-Testing TRAU EFR transcoding.
-Testing TRAU EFR decoding with CRC error.
-Testing TRAU FR transcoding.
-Testing TRAU EFR transcoding.
-Testing TRAU EFR decoding with CRC error.
-Testing TRAU FR transcoding.
-Testing TRAU EFR transcoding.
-Testing TRAU EFR decoding with CRC error.
-Done
diff --git a/tests/vlr/Makefile.am b/tests/vlr/Makefile.am
deleted file mode 100644
index 2208a6f59..000000000
--- a/tests/vlr/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS = -Wall -ggdb3 \
- $(LIBOSMOCORE_CFLAGS) \
- $(LIBOSMOGSM_CFLAGS) \
- $(COVERAGE_CFLAGS) \
- $(LIBOSMOABIS_CFLAGS) \
- $(NULL)
-AM_LDFLAGS = $(COVERAGE_LDFLAGS)
-
-noinst_PROGRAMS = vlr_test
-
-vlr_test_SOURCES = vlr_test.c
-vlr_test_LDADD = \
- $(top_builddir)/src/libvlr/libvlr.a \
- $(top_builddir)/src/libcommon/libcommon.a \
- $(LIBOSMOCORE_LIBS) \
- $(LIBOSMOGSM_LIBS) \
- $(LIBOSMOVTY_LIBS) \
- $(LIBOSMOABIS_LIBS) \
- $(LIBRARY_DL) \
- $(LIBCRYPTO_LIBS) \
- $(NULL)
diff --git a/tests/vlr/vlr_test.c b/tests/vlr/vlr_test.c
deleted file mode 100644
index 19beb69c4..000000000
--- a/tests/vlr/vlr_test.c
+++ /dev/null
@@ -1,694 +0,0 @@
-#include <stdlib.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <signal.h>
-
-#include <osmocom/gsm/gsm48.h>
-#include <osmocom/gsm/protocol/gsm_04_08_gprs.h>
-#include <osmocom/core/application.h>
-#include <osmocom/core/logging.h>
-#include <osmocom/core/fsm.h>
-
-#include <openbsc/vlr.h>
-#include <openbsc/debug.h>
-
-#define S(x) (1 << (x))
-
-/*
- * TODO:
- * * test FSM for all testvlr_mode (and more)
- * * test also the time-outs in the vlr code
- * * test for memory leaks
- * * how to get the HLR running? Or test against stub?
- * * test disappearing MS connection
- * * test absence of HLR
- */
-
-void *tall_bsc_ctx;
-static struct vlr_instance *g_vlr;
-
-/***********************************************************************
- * Finite State Machine simulating MS and MSC towards VLR
- ***********************************************************************/
-
-static int timer_error_cb(struct osmo_fsm_inst *fi)
-{
- LOGPFSM(fi, "timer expired waiting for completion\n");
- osmo_fsm_inst_term(fi, OSMO_FSM_TERM_ERROR, NULL);
- return 1;
-}
-
-enum testvlr_mode {
- MODE_SUCCESS,
- MODE_SUCCESS_TMSI,
- MODE_AUTH_FAIL,
- MODE_AUTH_RESYNC,
-};
-
-struct testvlr_priv {
- enum testvlr_mode mode;
- uint32_t tmsi;
- char imsi[16];
- char imei[16];
- struct osmo_location_area_id old_lai;
- struct osmo_location_area_id new_lai;
-
- struct vlr_subscr *subscr;
-
- struct osmo_fsm_inst *lu_fsm;
-};
-
-#define fsi_priv(x) (struct testvlr_priv *)(x)->priv
-
-enum f_state {
- /*! initial state */
- ST_NULL,
- /*! LU was sent by MS */
- ST_LU_SENT,
- /*! waiting for auth re-sync */
- ST_RESYNC_SENT,
- /* Waiting for LU ACK */
- ST_WAIT_LU_ACK,
- ST_DONE,
- ST_FAILED,
-};
-
-enum f_event {
- /* events from MS */
- EVT_MS_TX_LU, /* transmit LU REQ to network */
- EVT_MS_TX_ID_RESP, /* tranmit ID RSP to network */
- EVT_MS_TX_AUTH_RESP, /* transmit AUTH RESP to network */
- EVT_MS_TX_AUTH_FAIL, /* transmit AUTH FAIL to network */
- EVT_MS_CONN_LOST, /* connection to MS was lost */
-
- /* events from VLR */
- EVT_VLR_AUTH_REQ, /* transmit AUTH REQ to MS */
- EVT_VLR_ID_REQ_IMSI, /* transmit ID REQ(IMSI) to MS */
- EVT_VLR_ID_REQ_IMEI, /* tramsmit ID REQ(IMEI) to MS */
- EVT_VLR_ID_REQ_IMEISV, /* trasnmit ID REQ(IMEISV) to MS */
- EVT_VLR_AUTH_REJ, /* transmit AUTH REJ to MS */
- EVT_VLR_SET_CIPH, /* transmit SET CIPH to MS */
- EVT_VLR_LU_ACK, /* transmit LU ACK to MS */
- EVT_VLR_LU_REJ, /* transmit LU REJ to MS */
-};
-
-static struct value_string f_event_names[] = {
- { EVT_MS_TX_LU, "MS-TX-LU" },
- { EVT_MS_TX_ID_RESP, "MS-TX-ID-RESP" },
- { EVT_MS_TX_AUTH_RESP, "MS-TX-AUTH-RESP" },
- { EVT_MS_TX_AUTH_FAIL, "MS-TX-AUTH-FAIL" },
- { EVT_MS_CONN_LOST, "MS-CONN-LOST" },
-
- { EVT_VLR_AUTH_REQ, "VLR-AUTH-REQ" },
- { EVT_VLR_ID_REQ_IMSI, "VLR-ID-REQ-IMSI" },
- { EVT_VLR_ID_REQ_IMEI, "VLR-ID-REQ-IMEI" },
- { EVT_VLR_ID_REQ_IMEISV,"VLR-ID-REQ-IMEISV" },
- { EVT_VLR_AUTH_REJ, "VLR-AUTH-REJ" },
- { EVT_VLR_SET_CIPH, "VLR-SET-CIPH" },
- { EVT_VLR_LU_ACK, "VLR-LU-ACK" },
- { EVT_VLR_LU_REJ, "VLR-LU-REJ" },
- { 0, NULL }
-};
-
-static void fsm_f_allstate(struct osmo_fsm_inst *fi, uint32_t event,
- void *data)
-{
- struct testvlr_priv *priv = fsi_priv(fi);
- uint8_t mi[16];
- unsigned int mi_len;
-
- switch (event) {
- case EVT_VLR_ID_REQ_IMSI:
- if (priv->mode != MODE_SUCCESS_TMSI) {
- LOGP(DGPRS, LOGL_NOTICE, "Unexpected ID REQ "
- "(IMSI)\n");
- }
- mi_len = gsm48_generate_mid_from_imsi(mi, priv->imsi);
- vlr_subscr_rx_id_resp(priv->subscr, mi+2, mi_len-2);
- break;
- case EVT_VLR_ID_REQ_IMEI:
- mi_len = gsm48_generate_mid_from_imsi(mi, priv->imei);
- mi[0] = (mi[0] & 0xf8) | GSM_MI_TYPE_IMEI;
- vlr_subscr_rx_id_resp(priv->subscr+2, mi, mi_len-2);
- break;
- case EVT_VLR_ID_REQ_IMEISV:
- mi_len = gsm48_generate_mid_from_imsi(mi, priv->imei);
- mi[0] = (mi[0] & 0xf8) | GSM_MI_TYPE_IMEISV;
- vlr_subscr_rx_id_resp(priv->subscr, mi+2, mi_len-2);
- break;
- case EVT_MS_CONN_LOST:
- vlr_subscr_disconnected(priv->subscr);
- /* IDEA: not release but keep around in extra state to
- * see if VLR still sends us anything? */
- osmo_fsm_inst_free(fi);
- break;
- }
-}
-
-static void fsm_f_null(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct testvlr_priv *priv = fsi_priv(fi);
- uint32_t tmsi = 0;
- const char *imsi = NULL;
-
- switch (event) {
- case EVT_MS_TX_LU:
- /* send LU to VLR */
- if (priv->mode == MODE_SUCCESS)
- imsi = priv->imsi;
- else
- tmsi = priv->tmsi;
- priv->lu_fsm = vlr_loc_update(fi,
- EVT_VLR_LU_ACK,
- EVT_VLR_LU_REJ,
- NULL,
- g_vlr, NULL,
- VLR_LU_TYPE_IMSI_ATTACH, tmsi,
- imsi, &priv->old_lai,
- &priv->new_lai,
- true,
- true,
- false,
- false,
- true);
- OSMO_ASSERT(priv->subscr);
- osmo_fsm_inst_state_chg(fi, ST_LU_SENT, 0, 0);
- break;
- default:
- break;
- }
-}
-
-static void fsm_f_lu_sent(struct osmo_fsm_inst *fi, uint32_t event,
- void *data)
-{
- struct gsm_auth_tuple *at = NULL;
- struct testvlr_priv *priv = fsi_priv(fi);
- uint8_t res_fail[4];
- uint8_t auts[14];
-
- switch (event) {
- case EVT_VLR_AUTH_REQ:
- at = data;
- OSMO_ASSERT(at);
- DEBUGP(DGPRS, "%s: at->res=%s\n", __func__, osmo_hexdump(at->vec.res, at->vec.res_len));
- switch (priv->mode) {
- case MODE_SUCCESS:
- case MODE_SUCCESS_TMSI:
- /* return matching SRES/AUTS */
- vlr_subscr_rx_auth_resp(priv->subscr, true, false,
- at->vec.res, at->vec.res_len);
- break;
- case MODE_AUTH_FAIL:
- /* return not matching SRES/AUTS */
- vlr_subscr_rx_auth_resp(priv->subscr, true, false,
- res_fail, sizeof(res_fail));
- /* FIXME: state transition? */
- break;
- case MODE_AUTH_RESYNC:
- /* return SRES/AUTS requesting re-sync */
- /* FIXME: generate a proper authenticating
- * re-sync request */
- vlr_subscr_rx_auth_fail(priv->subscr, auts);
- /* FIXME: state transition? */
- osmo_fsm_inst_state_chg(fi, ST_RESYNC_SENT, 0, 0);
- break;
- }
- osmo_fsm_inst_state_chg(fi, ST_WAIT_LU_ACK, 0, 0);
- break;
- case EVT_VLR_LU_REJ:
- {
- uint8_t cause = *(uint8_t *)data;
- LOGP(DGPRS, LOGL_NOTICE, "LU(%s): Rejected; cause=0x%02x\n",
- priv->imsi, cause);
-
- }
- break;
- default:
- break;
- }
-}
-
-#if 0
-static void fsm_f_resync_sent(struct osmo_fsm_inst *fi, uint32_t event,
- void *data)
-{
- struct testvlr_priv *priv = fsi_priv(fi);
- struct gsm_auth_tuple *at = NULL;
-
- /* second auth request is supposed to succed after the
- * re-sync procedure before */
- switch (event) {
- case EVT_VLR_AUTH_REQ:
- at = data;
- /* return matching SRES/AUTS now */
- vlr_subscr_rx_auth_resp(priv->subscr, true, false,
- at->vec.res, at->vec.res_len);
- osmo_fsm_inst_state_chg(fi, ST_WAIT_LU_ACK, 0, 0);
- break;
- }
-}
-#endif
-
-static void fsm_f_wait_lu_ack(struct osmo_fsm_inst *fi, uint32_t event,
- void *data)
-{
- struct testvlr_priv *priv = fsi_priv(fi);
-
- switch (event) {
- case EVT_VLR_LU_ACK:
- if (priv->subscr->tmsi != GSM_RESERVED_TMSI) {
- /* we need to send an TMSI REALLOC COMPL */
- vlr_subscr_rx_tmsi_reall_compl(priv->subscr);
- }
- osmo_fsm_inst_state_chg(fi, ST_DONE, 0, 0);
- break;
- case EVT_VLR_LU_REJ:
- osmo_fsm_inst_state_chg(fi, ST_FAILED, 0, 0);
- break;
- }
-}
-
-static void fsm_f_imsi_sent(struct osmo_fsm_inst *fi, uint32_t event,
- void *data)
-{
- switch (event) {
- case EVT_MS_TX_ID_RESP:
- break;
- }
-}
-
-#if 0
-static void fsm_f_areq_sent(struct osmo_fsm_inst *fi, uint32_t event,
- void *data)
-{
- switch (event) {
- case EVT_MS_TX_AUTH_RESP:
- break;
- case EVT_MS_TX_AUTH_FAIL:
- break;
- }
-}
-#endif
-
-static struct osmo_fsm_state fsm_success_states[] = {
- [ST_NULL] = {
- .in_event_mask = S(EVT_MS_TX_LU),
- .out_state_mask = S(ST_LU_SENT),
- .name = "NULL",
- .action = fsm_f_null,
- },
- [ST_LU_SENT] = {
- .in_event_mask = S(EVT_VLR_AUTH_REQ) |
- S(EVT_VLR_LU_REJ),
- //.out_state_mask = S(ST_IDREQ_IMSI_SENT) | S(ST_AUTH_REQ_SENT),
- .out_state_mask = S(ST_WAIT_LU_ACK),
- .name = "LU Sent",
- .action = fsm_f_lu_sent,
- },
- [ST_RESYNC_SENT] = {
- .in_event_mask = S(EVT_VLR_AUTH_REQ),
- .out_state_mask = S(ST_WAIT_LU_ACK),
- .name = "AUTH-RESYNC sent",
- .action = fsm_f_imsi_sent,
- },
- [ST_WAIT_LU_ACK] = {
- .in_event_mask = S(EVT_VLR_LU_ACK) |
- S(EVT_VLR_SET_CIPH) |
- S(EVT_VLR_LU_REJ),
- .out_state_mask = S(ST_DONE),
- .name = "WAIT-LU-ACK",
- .action = fsm_f_wait_lu_ack,
- },
- [ST_DONE] = {
- .name = "DONE"
- },
-};
-
-static struct osmo_fsm vlr_test_fsm = {
- .name = "VLR Test FSM",
- .states = fsm_success_states,
- .num_states = ARRAY_SIZE(fsm_success_states),
- .log_subsys = DGPRS,
- .event_names = f_event_names,
- .allstate_event_mask = S(EVT_MS_CONN_LOST) |
- S(EVT_VLR_ID_REQ_IMSI) |
- S(EVT_VLR_ID_REQ_IMEI) |
- S(EVT_VLR_ID_REQ_IMEISV),
- .allstate_action = fsm_f_allstate,
-};
-
-/* Testing of Subscriber_Present_VLR */
-
-enum test_sub_pres_state {
- TSPV_S_INIT,
- TSPV_S_RUNNING,
-};
-
-enum test_sub_pres_evt {
- TSPV_E_START,
- TSPV_E_COMPL,
-};
-
-static void tspv_f_running(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct vlr_subscr *vsub = fi->priv;
-
- switch (event) {
- case TSPV_E_COMPL:
- OSMO_ASSERT(vsub);
- OSMO_ASSERT(vsub->ms_not_reachable_flag == false);
- osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL);
- break;
- }
-}
-
-static void tspv_f_init(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct osmo_fsm_inst *spv;
- struct vlr_subscr *vsub = fi->priv;
-
- switch (event) {
- case TSPV_E_START:
- OSMO_ASSERT(vsub);
- vsub->ms_not_reachable_flag = true;
- spv = sub_pres_vlr_fsm_start(fi, vsub, TSPV_E_COMPL);
- OSMO_ASSERT(spv);
- osmo_fsm_inst_state_chg(fi, TSPV_S_RUNNING, 4, 0);
- break;
- }
-}
-
-static const struct osmo_fsm_state test_sub_pres_vlr_states[] = {
- [TSPV_S_INIT] = {
- .in_event_mask = S(TSPV_E_START),
- .out_state_mask = S(TSPV_S_RUNNING),
- .name = "INIT",
- .action = tspv_f_init,
- },
- [TSPV_S_RUNNING] = {
- .in_event_mask = S(TSPV_E_COMPL),
- .out_state_mask = 0,
- .name = "RUNNING",
- .action = tspv_f_running,
- },
-};
-
-static struct osmo_fsm test_sub_pres_vlr_fsm = {
- .name = "Test Subscriber_Present_VLR",
- .states = test_sub_pres_vlr_states,
- .num_states = ARRAY_SIZE(test_sub_pres_vlr_states),
- .log_subsys = DGPRS,
- .event_names = f_event_names,
- .timer_cb = timer_error_cb,
-};
-
-#if 0
-static void start_sub_pres_vlr(void *ctx, uint32_t tmsi, const char *imsi)
-{
- struct osmo_fsm_inst *fi;
- struct vlr_subscr *vsub = vlr_subscr_alloc(g_vlr);
-
- vsub->tmsi = tmsi;
- strncpy(vsub->imsi, imsi, sizeof(vsub->imsi));
- fi = osmo_fsm_inst_alloc(&test_sub_pres_vlr_fsm, ctx, vsub, LOGL_DEBUG, vsub->imsi);
- osmo_fsm_inst_dispatch(fi, TSPV_E_START, NULL);
-}
-#endif
-
-/* Testing of Update_HLR_VLR */
-
-enum test_update_hlr_vlr_state {
- TUHV_S_INIT,
- TUHV_S_RUNNING,
-};
-
-enum test_update_hlr_vlr_event {
- TUHV_E_START,
- TUHV_E_COMPL,
-};
-
-static void tuhv_f_running(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- enum gsm48_gmm_cause *res = data;
-
- switch (event) {
- case TUHV_E_COMPL:
- if (!res) {
- /* Success */
- LOGPFSM(fi, "success\n");
- } else {
- /* error */
- LOGPFSM(fi, "errror cause=0x%u\n", *res);
- }
- osmo_fsm_inst_term(fi, OSMO_FSM_TERM_REGULAR, NULL);
- break;
- }
-}
-
-static void tuhv_f_init(struct osmo_fsm_inst *fi, uint32_t event, void *data)
-{
- struct osmo_fsm_inst *child;
- struct vlr_subscr *vsub = fi->priv;
-
- switch (event) {
- case TUHV_E_START:
- child = upd_hlr_vlr_proc_start(fi, vsub, TUHV_E_COMPL);
- OSMO_ASSERT(child);
- osmo_fsm_inst_state_chg(fi, TUHV_S_RUNNING, 4, 0);
- break;
- }
-}
-
-static const struct osmo_fsm_state test_upd_hlr_vlr_states[] = {
- [TUHV_S_INIT] = {
- .in_event_mask = S(TUHV_E_START),
- .out_state_mask = S(TUHV_S_RUNNING),
- .name = "INIT",
- .action = tuhv_f_init,
- },
- [TUHV_S_RUNNING] = {
- .in_event_mask = S(TUHV_E_COMPL),
- .out_state_mask = 0,
- .name = "RUNNING",
- .action = tuhv_f_running,
- },
-};
-
-static struct osmo_fsm test_upd_hlr_vlr_fsm = {
- .name = "Test Update_HLR_VLR",
- .states = test_upd_hlr_vlr_states,
- .num_states = ARRAY_SIZE(test_upd_hlr_vlr_states),
- .log_subsys = DGPRS,
- .event_names = f_event_names,
- .timer_cb = timer_error_cb,
-};
-
-#if 0
-static void start_upd_hlr_vlr(void *ctx, uint32_t tmsi, const char *imsi)
-{
- struct osmo_fsm_inst *fi;
- struct vlr_subscr *vsub = vlr_subscr_alloc(g_vlr);
-
- vsub->tmsi = tmsi;
- strncpy(vsub->imsi, imsi, sizeof(vsub->imsi));
-
-
- fi = osmo_fsm_inst_alloc(&test_upd_hlr_vlr_fsm, ctx, vsub, LOGL_DEBUG,
- vsub->imsi);
- /* we need to set this to fool vlr.c in an ongoing LU */
- vsub->lu_fsm = fi;
- osmo_fsm_inst_dispatch(fi, TUHV_E_START, NULL);
-}
-#endif
-
-/***********************************************************************
- * Integration with VLR code
- ***********************************************************************/
-
-static struct vlr_instance *g_vlr;
-
-/* VLR asks us to send an authentication request */
-static int msc_vlr_tx_auth_req(void *msc_conn_ref, struct gsm_auth_tuple *at,
- bool send_autn)
-{
- struct osmo_fsm_inst *fi = msc_conn_ref;
- OSMO_ASSERT(at);
- DEBUGP(DGPRS, "%s: RES=%s\n", __func__,
- osmo_hexdump_nospc(at->vec.res, at->vec.res_len));
- osmo_fsm_inst_dispatch(fi, EVT_VLR_AUTH_REQ, at);
- return 0;
-}
-
-/* VLR asks us to send an authentication reject */
-static int msc_vlr_tx_auth_rej(void *msc_conn_ref)
-{
- struct osmo_fsm_inst *fi = msc_conn_ref;
- DEBUGP(DGPRS, "%s\n", __func__);
- osmo_fsm_inst_dispatch(fi, EVT_VLR_AUTH_REJ, NULL);
- return 0;
-}
-
-/* VLR asks us to transmit an Identity Request of given type */
-static int msc_vlr_tx_id_req(void *msc_conn_ref, uint8_t mi_type)
-{
- struct osmo_fsm_inst *fi = msc_conn_ref;
- uint32_t event;
-
- DEBUGP(DGPRS, "%s (%u)\n", __func__, mi_type);
-
- switch (mi_type) {
- case GSM_MI_TYPE_IMSI:
- event = EVT_VLR_ID_REQ_IMSI;
- break;
- case GSM_MI_TYPE_IMEI:
- event = EVT_VLR_ID_REQ_IMEI;
- break;
- case GSM_MI_TYPE_IMEISV:
- event = EVT_VLR_ID_REQ_IMEISV;
- break;
- default:
- LOGP(DGPRS, LOGL_ERROR, "Unknown identity 0x%02x\n",
- mi_type);
- return -1;
- }
- osmo_fsm_inst_dispatch(fi, event, NULL);
- return 0;
-}
-
-/* VLR asks us to transmit a Location Update Accept */
-static int msc_vlr_tx_lu_ack(void *msc_conn_ref, uint32_t send_tmsi)
-{
- struct osmo_fsm_inst *fi = msc_conn_ref;
- DEBUGP(DGPRS, "%s\n", __func__);
- osmo_fsm_inst_dispatch(fi, EVT_VLR_LU_ACK, NULL);
- return 0;
-}
-
-/* VLR asks us to transmit a Location Update Reject */
-static int msc_vlr_tx_lu_rej(void *msc_conn_ref, uint8_t cause)
-{
- struct osmo_fsm_inst *fi = msc_conn_ref;
- DEBUGP(DGPRS, "%s\n", __func__);
- osmo_fsm_inst_dispatch(fi, EVT_VLR_LU_REJ, (void *) &cause);
- return 0;
-}
-
-static int msc_vlr_set_ciph_mode(void *msc_conn_ref, enum vlr_ciph mode,
- bool retrieve_imeisv)
-{
- struct osmo_fsm_inst *fi = msc_conn_ref;
- DEBUGP(DGPRS, "%s\n", __func__);
- osmo_fsm_inst_dispatch(fi, EVT_VLR_SET_CIPH, NULL);
- return 0;
-}
-
-/* VLR informs us that the subscriber data has somehow been modified */
-static void msc_vlr_subscr_update(struct vlr_subscr *subscr)
-{
- DEBUGP(DGPRS, "%s\n", __func__);
- /* FIXME */
-}
-
-static void msc_vlr_subscr_assoc(void *msc_conn_ref, struct vlr_subscr *vsub)
-{
- struct osmo_fsm_inst *fi = msc_conn_ref;
- struct testvlr_priv *priv = fsi_priv(fi);
- DEBUGP(DGPRS, "%s(%p, %s)\n", __func__, msc_conn_ref, vlr_subscr_name(vsub));
- priv->subscr = vsub;
-}
-
-/* operations that we need to implement for libvlr */
-static const struct vlr_ops test_vlr_ops = {
- .tx_auth_req = msc_vlr_tx_auth_req,
- .tx_auth_rej = msc_vlr_tx_auth_rej,
- .tx_id_req = msc_vlr_tx_id_req,
- .tx_lu_acc = msc_vlr_tx_lu_ack,
- .tx_lu_rej = msc_vlr_tx_lu_rej,
- .set_ciph_mode = msc_vlr_set_ciph_mode,
- .subscr_update = msc_vlr_subscr_update,
- .subscr_assoc = msc_vlr_subscr_assoc,
-};
-
-/***********************************************************************
- * Actual test cases
- ***********************************************************************/
-
-
-static struct osmo_fsm_inst *
-start_lu(enum testvlr_mode mode, uint32_t tmsi,
- const char *imsi, const char *imei)
-{
- struct testvlr_priv *vp;
- struct osmo_fsm_inst *fi;
-
- vp = talloc_zero(tall_bsc_ctx, struct testvlr_priv);
- vp->mode = mode;
- vp->tmsi = tmsi;
- strncpy(vp->imsi, imsi, sizeof(vp->imsi));
- strncpy(vp->imei, imei, sizeof(vp->imei));
-
- fi = osmo_fsm_inst_alloc(&vlr_test_fsm, vp, vp, LOGL_DEBUG, vp->imsi);
- osmo_fsm_inst_dispatch(fi, EVT_MS_TX_LU, NULL);
- return fi;
-}
-
-/***********************************************************************
- * Main / Misc
- ***********************************************************************/
-
-static struct osmo_timer_list tmr;
-
-static void timer_cb(void *data)
-{
- uint32_t tmsi = rand() % 1000000;
- uint64_t imsi = 901790000000000 + tmsi;
- char imsi_str[32];
-
- snprintf(imsi_str, sizeof(imsi_str), "%lu", imsi);
- //start_lu(MODE_AUTH_FAIL, tmsi, imsi_str, "23422342");
- start_lu(MODE_SUCCESS_TMSI, tmsi, imsi_str, "23422342");
- //start_lu(MODE_SUCCESS, tmsi, imsi_str, "23422342");
- //start_upd_hlr_vlr(tall_bsc_ctx, tmsi, imsi_str);
- //start_sub_pres_vlr(tall_bsc_ctx);
- osmo_timer_schedule(&tmr, 8, 0);
-}
-
-static void sighdlr(int sig)
-{
- switch (sig) {
- case SIGUSR1:
- talloc_report_full(tall_bsc_ctx, stderr);
- break;
- }
-}
-
-int main(int argc, char **argv)
-{
- tall_bsc_ctx = talloc_named_const(NULL, 1, "tall_bsc_ctx");
-
- signal(SIGUSR1, sighdlr);
-
- osmo_init_logging(&log_info);
-
- g_vlr = vlr_alloc(NULL, &test_vlr_ops);
- vlr_start("VLRTEST", g_vlr, "localhost", 2222);
- OSMO_ASSERT(g_vlr);
- osmo_fsm_register(&vlr_test_fsm);
- osmo_fsm_register(&test_sub_pres_vlr_fsm);
- osmo_fsm_register(&test_upd_hlr_vlr_fsm);
-
- g_vlr->cfg.assign_tmsi = true;
-
- tmr.cb = timer_cb;
- timer_cb(NULL);
-
- while (1) {
- osmo_select_main(0);
- }
-
- exit(0);
-}
-
-struct gsm_subscriber_connection;
-int gsm48_tx_mm_serv_ack(struct gsm_subscriber_connection *conn) { return 0; }